diff --git a/eng/emitter-package-lock.json b/eng/emitter-package-lock.json index 3c01ef8299eb..dceaf4e4cba8 100644 --- a/eng/emitter-package-lock.json +++ b/eng/emitter-package-lock.json @@ -5,16 +5,16 @@ "packages": { "": { "dependencies": { - "@azure-tools/typespec-java": "0.13.11" + "@azure-tools/typespec-java": "0.14.1" }, "devDependencies": { - "@azure-tools/typespec-azure-core": "0.39.1", - "@azure-tools/typespec-client-generator-core": "0.39.1", - "@typespec/compiler": "0.53.1", - "@typespec/http": "0.53.0", - "@typespec/openapi": "0.53.0", - "@typespec/rest": "0.53.0", - "@typespec/versioning": "0.53.0" + "@azure-tools/typespec-azure-core": "0.40.0", + "@azure-tools/typespec-client-generator-core": "0.40.0", + "@typespec/compiler": "0.54.0", + "@typespec/http": "0.54.0", + "@typespec/openapi": "0.54.0", + "@typespec/rest": "0.54.0", + "@typespec/versioning": "0.54.0" } }, "node_modules/@autorest/codemodel": { @@ -63,42 +63,42 @@ } }, "node_modules/@azure-tools/typespec-azure-core": { - "version": "0.39.1", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.39.1.tgz", - "integrity": "sha512-b1cN1HXTcEiKIRpk2EatFK/C4NReDaW2h4N3V4C5dxGeeLAnTa1jsQ6lwobH6Zo39CdrjazNXiSbcEq1UZ7kPw==", + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.40.0.tgz", + "integrity": "sha512-l5U47zXKYQKFbipRQLpjG4EwvPJg0SogdFEe5a3rRr7mUy8sWPkciHpngLZVOd2cKZQD5m7nqwfWL798I9TJnQ==", "dev": true, "engines": { "node": ">=18.0.0" }, "peerDependencies": { - "@typespec/compiler": "~0.53.1", - "@typespec/http": "~0.53.0", - "@typespec/rest": "~0.53.0" + "@typespec/compiler": "~0.54.0", + "@typespec/http": "~0.54.0", + "@typespec/rest": "~0.54.0" } }, "node_modules/@azure-tools/typespec-client-generator-core": { - "version": "0.39.1", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.39.1.tgz", - "integrity": "sha512-EV3N6IN1i/hXGqYKNfXx6+2QAyZnG4IpC9RUk6fqwSQDWX7HtMcfdXqlOaK3Rz2H6BUAc9OnH+Trq/uJCl/RgA==", + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.40.0.tgz", + "integrity": "sha512-Nm/OfDtSWBr1lylISbXR37B9QKWlZHK1j4T8L439Y1v3VcvJsC/0F5PLemY0odHpOYZNwu2uevJjAeM5W56wlw==", "dev": true, "dependencies": { - "change-case": "~5.3.0", + "change-case": "~5.4.2", "pluralize": "^8.0.0" }, "engines": { "node": ">=18.0.0" }, "peerDependencies": { - "@typespec/compiler": "~0.53.1", - "@typespec/http": "~0.53.0", - "@typespec/rest": "~0.53.0", - "@typespec/versioning": "~0.53.0" + "@typespec/compiler": "~0.54.0", + "@typespec/http": "~0.54.0", + "@typespec/rest": "~0.54.0", + "@typespec/versioning": "~0.54.0" } }, "node_modules/@azure-tools/typespec-java": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-java/-/typespec-java-0.13.11.tgz", - "integrity": "sha512-/0X6hS4BZbFn3xa3vynYmaFjuAZEFE1HRgHFN7ptAhloZL7nAicmkdYBMtyfLaJV0kHBwKDPHooB7c16afliEw==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-java/-/typespec-java-0.14.1.tgz", + "integrity": "sha512-FGQV12Ck17mfzTgzrz0gpSYt8NAM9gxYLlWcS3vZpokCGB81VG1VKN6u80ui2HfVKZJldxa8MkwqUvv9zml4Yw==", "dependencies": { "@autorest/codemodel": "~4.20.0", "js-yaml": "~4.1.0", @@ -108,8 +108,8 @@ "node": ">=14.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": ">=0.39.1 <1.0.0", - "@azure-tools/typespec-client-generator-core": ">=0.39.1 <1.0.0", + "@azure-tools/typespec-azure-core": ">=0.40.0 <1.0.0", + "@azure-tools/typespec-client-generator-core": ">=0.40.0 <1.0.0", "@typespec/compiler": ">=0.53.1 <1.0.0", "@typespec/http": ">=0.53.0 <1.0.0", "@typespec/openapi": ">=0.53.0 <1.0.0", @@ -201,22 +201,22 @@ } }, "node_modules/@typespec/compiler": { - "version": "0.53.1", - "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-0.53.1.tgz", - "integrity": "sha512-qneMDvZsLaL8+3PXzwXMAqgE4YtkUPPBg4oXrbreYa5NTccuvgVaO4cfya/SzG4WePUnmDTbbrP5aWd+VzYwYA==", + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-0.54.0.tgz", + "integrity": "sha512-lxMqlvUq5m1KZUjg+IoM/gEwY+yeSjjnpUsz6wmzjK4cO9cIY4wPJdrZwe8jUc2UFOoqKXN3AK8N1UWxA+w9Dg==", "dev": true, "dependencies": { "@babel/code-frame": "~7.23.5", "ajv": "~8.12.0", - "change-case": "~5.3.0", + "change-case": "~5.4.2", "globby": "~14.0.0", "mustache": "~4.2.0", "picocolors": "~1.0.0", - "prettier": "~3.1.1", + "prettier": "~3.2.5", "prompts": "~2.4.2", - "semver": "^7.5.4", - "vscode-languageserver": "~9.0.0", - "vscode-languageserver-textdocument": "~1.0.8", + "semver": "^7.6.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", "yaml": "~2.3.4", "yargs": "~17.7.2" }, @@ -229,53 +229,53 @@ } }, "node_modules/@typespec/http": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@typespec/http/-/http-0.53.0.tgz", - "integrity": "sha512-Hdwbxr6KgzmJdULbbcwWaSSrWlduuMuEVUVdlytxyo9K+aoUCcPl0thR5Ez2VRh02/IJl3xG4n5wXgOwWb3amA==", + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@typespec/http/-/http-0.54.0.tgz", + "integrity": "sha512-/hZd9pkjJh3ogOekyKzZnpVV2kXzxtWDiTt3Gekc6iHTGk/CE1JpRFts8xwXoI5d3FqYotfb4w5ztVw62WjOcA==", "dev": true, "engines": { "node": ">=18.0.0" }, "peerDependencies": { - "@typespec/compiler": "~0.53.0" + "@typespec/compiler": "~0.54.0" } }, "node_modules/@typespec/openapi": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-0.53.0.tgz", - "integrity": "sha512-FRHb6Wi4Yf1HGm3EnhhXZ0Bw+EIPam6ptxRy7NDRxyMnzHsOphGcv8mDIZk6MPSy8xPasbFNwaRC1TXpxVhQBw==", + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-0.54.0.tgz", + "integrity": "sha512-QJkwq3whcqKb29ScMD5IQzqvDmPQyLAubRl82Zj6kVMCqabRwegOX9aN+K0083nci65zt9rflZbv9bKY5GRy/A==", "dev": true, "engines": { "node": ">=18.0.0" }, "peerDependencies": { - "@typespec/compiler": "~0.53.0", - "@typespec/http": "~0.53.0" + "@typespec/compiler": "~0.54.0", + "@typespec/http": "~0.54.0" } }, "node_modules/@typespec/rest": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.53.0.tgz", - "integrity": "sha512-aA75Ol2pRvUjtRqQvFHmFG52pkeif3m+tboLAT00AekTxOPZ3rqQmlE12ne4QF8KjgHA6denqH4f/XyDoRJOJQ==", + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.54.0.tgz", + "integrity": "sha512-F1hq/Per9epPJQ8Ey84mAtrgrZeLu6fDMIxNao1XlTfDEFZuYgFuCSyg0pyIi0Xg7KUBMvrvSv83WoF3mN2szw==", "dev": true, "engines": { "node": ">=18.0.0" }, "peerDependencies": { - "@typespec/compiler": "~0.53.0", - "@typespec/http": "~0.53.0" + "@typespec/compiler": "~0.54.0", + "@typespec/http": "~0.54.0" } }, "node_modules/@typespec/versioning": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.53.0.tgz", - "integrity": "sha512-nrrLXCWPDrrClAfpCMzQ3YPTbKQmjPC3LSeMjq+wPiMq+1PW95ulOGD4QiCBop+4wKhMCJHnqqSzVauT1LjdvQ==", + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.54.0.tgz", + "integrity": "sha512-IlGpveOJ0WBTbn3w8nfzgSNhJWNd0+H+bo1Ljrjpeb9SFQmS8bX2fDf0vqsHVl50XgvKIZxgOpEXN5TmuzNnRw==", "dev": true, "engines": { "node": ">=18.0.0" }, "peerDependencies": { - "@typespec/compiler": "~0.53.0" + "@typespec/compiler": "~0.54.0" } }, "node_modules/ajv": { @@ -347,9 +347,9 @@ } }, "node_modules/change-case": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.3.0.tgz", - "integrity": "sha512-Eykca0fGS/xYlx2fG5NqnGSnsWauhSGiSXYhB1kO6E909GUfo8S54u4UZNS7lMJmgZumZ2SUpWaoLgAcfQRICg==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.3.tgz", + "integrity": "sha512-4cdyvorTy/lViZlVzw2O8/hHCLUuHqp4KpSSP3DlauhFCf3LdnfF+p5s0EAhjKsU7bqrMzu7iQArYfoPiHO2nw==", "dev": true }, "node_modules/cliui": { @@ -670,9 +670,9 @@ } }, "node_modules/prettier": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", - "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" diff --git a/eng/emitter-package.json b/eng/emitter-package.json index bee85c1878b7..925f81645b87 100644 --- a/eng/emitter-package.json +++ b/eng/emitter-package.json @@ -1,15 +1,15 @@ { "main": "dist/src/index.js", "dependencies": { - "@azure-tools/typespec-java": "0.13.11" + "@azure-tools/typespec-java": "0.14.1" }, "devDependencies": { - "@typespec/http": "0.53.0", - "@typespec/openapi": "0.53.0", - "@azure-tools/typespec-azure-core": "0.39.1", - "@azure-tools/typespec-client-generator-core": "0.39.1", - "@typespec/rest": "0.53.0", - "@typespec/versioning": "0.53.0", - "@typespec/compiler": "0.53.1" + "@azure-tools/typespec-client-generator-core": "0.40.0", + "@typespec/compiler": "0.54.0", + "@typespec/openapi": "0.54.0", + "@typespec/versioning": "0.54.0", + "@azure-tools/typespec-azure-core": "0.40.0", + "@typespec/http": "0.54.0", + "@typespec/rest": "0.54.0" } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAdministrationAsyncClient.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAdministrationAsyncClient.java index daffff60bbd2..8bc841f4056e 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAdministrationAsyncClient.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAdministrationAsyncClient.java @@ -4,26 +4,11 @@ package com.azure.communication.jobrouter; import com.azure.communication.jobrouter.implementation.JobRouterAdministrationClientImpl; -import com.azure.communication.jobrouter.implementation.accesshelpers.ClassificationPolicyConstructorProxy; -import com.azure.communication.jobrouter.implementation.accesshelpers.DistributionPolicyConstructorProxy; -import com.azure.communication.jobrouter.implementation.accesshelpers.ExceptionPolicyConstructorProxy; -import com.azure.communication.jobrouter.implementation.accesshelpers.RouterQueueConstructorProxy; -import com.azure.communication.jobrouter.implementation.converters.ClassificationPolicyAdapter; -import com.azure.communication.jobrouter.implementation.converters.DistributionPolicyAdapter; -import com.azure.communication.jobrouter.implementation.converters.ExceptionPolicyAdapter; -import com.azure.communication.jobrouter.implementation.converters.QueueAdapter; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.communication.jobrouter.implementation.models.ClassificationPolicyInternal; import com.azure.communication.jobrouter.implementation.models.DistributionPolicyInternal; import com.azure.communication.jobrouter.implementation.models.ExceptionPolicyInternal; import com.azure.communication.jobrouter.implementation.models.RouterQueueInternal; -import com.azure.communication.jobrouter.models.ClassificationPolicy; -import com.azure.communication.jobrouter.models.CreateClassificationPolicyOptions; -import com.azure.communication.jobrouter.models.CreateDistributionPolicyOptions; -import com.azure.communication.jobrouter.models.CreateExceptionPolicyOptions; -import com.azure.communication.jobrouter.models.CreateQueueOptions; -import com.azure.communication.jobrouter.models.DistributionPolicy; -import com.azure.communication.jobrouter.models.ExceptionPolicy; -import com.azure.communication.jobrouter.models.RouterQueue; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; @@ -32,6 +17,7 @@ import com.azure.core.exception.HttpResponseException; import com.azure.core.exception.ResourceModifiedException; import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.HttpHeaderName; import com.azure.core.http.rest.PagedFlux; import com.azure.core.http.rest.PagedResponse; import com.azure.core.http.rest.PagedResponseBase; @@ -39,10 +25,28 @@ import com.azure.core.http.rest.Response; import com.azure.core.http.rest.SimpleResponse; import com.azure.core.util.BinaryData; +import com.azure.core.util.DateTimeRfc1123; import com.azure.core.util.FluxUtil; +import java.time.OffsetDateTime; import java.util.stream.Collectors; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import com.azure.communication.jobrouter.implementation.accesshelpers.ClassificationPolicyConstructorProxy; +import com.azure.communication.jobrouter.implementation.accesshelpers.DistributionPolicyConstructorProxy; +import com.azure.communication.jobrouter.implementation.accesshelpers.ExceptionPolicyConstructorProxy; +import com.azure.communication.jobrouter.implementation.accesshelpers.RouterQueueConstructorProxy; +import com.azure.communication.jobrouter.implementation.converters.ClassificationPolicyAdapter; +import com.azure.communication.jobrouter.implementation.converters.DistributionPolicyAdapter; +import com.azure.communication.jobrouter.implementation.converters.ExceptionPolicyAdapter; +import com.azure.communication.jobrouter.implementation.converters.QueueAdapter; +import com.azure.communication.jobrouter.models.ClassificationPolicy; +import com.azure.communication.jobrouter.models.CreateClassificationPolicyOptions; +import com.azure.communication.jobrouter.models.CreateDistributionPolicyOptions; +import com.azure.communication.jobrouter.models.CreateExceptionPolicyOptions; +import com.azure.communication.jobrouter.models.CreateQueueOptions; +import com.azure.communication.jobrouter.models.DistributionPolicy; +import com.azure.communication.jobrouter.models.ExceptionPolicy; +import com.azure.communication.jobrouter.models.RouterQueue; /** * Initializes a new instance of the asynchronous JobRouterAdministrationClient type. @@ -65,34 +69,15 @@ public final class JobRouterAdministrationAsyncClient { /** * Creates or updates a distribution policy. - *

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -100,15 +85,14 @@ public final class JobRouterAdministrationAsyncClient {
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -116,6 +100,7 @@ public final class JobRouterAdministrationAsyncClient {
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -130,15 +115,12 @@ public final class JobRouterAdministrationAsyncClient {
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return policy governing how jobs are distributed to workers along with {@link Response} on successful completion
-     * of {@link Mono}.
+     * @return policy governing how jobs are distributed to workers along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
     Mono> upsertDistributionPolicyWithResponse(String distributionPolicyId, BinaryData resource,
         RequestOptions requestOptions) {
-        // Convenience API is not generated, as operation 'upsertDistributionPolicy' is 'application/merge-patch+json'
-        // and stream-style-serialization is not enabled
         return this.serviceClient.upsertDistributionPolicyWithResponseAsync(distributionPolicyId, resource,
             requestOptions);
     }
@@ -334,9 +316,7 @@ public Mono updateDistributionPolicy(String distributionPolicyId, Bi
 
     /**
      * Retrieves an existing distribution policy by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -344,6 +324,7 @@ public Mono updateDistributionPolicy(String distributionPolicyId, Bi
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -357,8 +338,7 @@ public Mono updateDistributionPolicy(String distributionPolicyId, Bi
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return policy governing how jobs are distributed to workers along with {@link Response} on successful completion
-     * of {@link Mono}.
+     * @return policy governing how jobs are distributed to workers along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -369,28 +349,14 @@ public Mono> getDistributionPolicyWithResponse(String distr
 
     /**
      * Retrieves existing distribution policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -398,6 +364,7 @@ public Mono> getDistributionPolicyWithResponse(String distr
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -438,34 +405,15 @@ public Mono> deleteDistributionPolicyWithResponse(String distribu
 
     /**
      * Creates or updates a classification policy.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -474,19 +422,20 @@ public Mono> deleteDistributionPolicyWithResponse(String distribu
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -495,12 +444,15 @@ public Mono> deleteDistributionPolicyWithResponse(String distribu
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -513,15 +465,12 @@ public Mono> deleteDistributionPolicyWithResponse(String distribu
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a container for the rules that govern how jobs are classified along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return a container for the rules that govern how jobs are classified along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
     Mono> upsertClassificationPolicyWithResponse(String classificationPolicyId,
         BinaryData resource, RequestOptions requestOptions) {
-        // Convenience API is not generated, as operation 'upsertClassificationPolicy' is 'application/merge-patch+json'
-        // and stream-style-serialization is not enabled
         return this.serviceClient.upsertClassificationPolicyWithResponseAsync(classificationPolicyId, resource,
             requestOptions);
     }
@@ -740,9 +689,7 @@ public Mono updateClassificationPolicy(String classificationPolicyId
 
     /**
      * Retrieves an existing classification policy by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -751,12 +698,15 @@ public Mono updateClassificationPolicy(String classificationPolicyId
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -768,8 +718,7 @@ public Mono updateClassificationPolicy(String classificationPolicyId
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a container for the rules that govern how jobs are classified along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return a container for the rules that govern how jobs are classified along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -780,28 +729,14 @@ public Mono> getClassificationPolicyWithResponse(String cla
 
     /**
      * Retrieves existing classification policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -810,12 +745,15 @@ public Mono> getClassificationPolicyWithResponse(String cla
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -854,34 +792,15 @@ public Mono> deleteClassificationPolicyWithResponse(String classi
 
     /**
      * Creates or updates a exception policy.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -889,11 +808,13 @@ public Mono> deleteClassificationPolicyWithResponse(String classi
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -901,9 +822,7 @@ public Mono> deleteClassificationPolicyWithResponse(String classi
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -911,11 +830,13 @@ public Mono> deleteClassificationPolicyWithResponse(String classi
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -931,15 +852,12 @@ public Mono> deleteClassificationPolicyWithResponse(String classi
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a policy that defines actions to execute when exception are triggered along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return a policy that defines actions to execute when exception are triggered along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
     Mono> upsertExceptionPolicyWithResponse(String exceptionPolicyId, BinaryData resource,
         RequestOptions requestOptions) {
-        // Convenience API is not generated, as operation 'upsertExceptionPolicy' is 'application/merge-patch+json' and
-        // stream-style-serialization is not enabled
         return this.serviceClient.upsertExceptionPolicyWithResponseAsync(exceptionPolicyId, resource, requestOptions);
     }
 
@@ -1261,34 +1179,15 @@ public Mono> deleteExceptionPolicyWithResponse(String exceptionPo
 
     /**
      * Creates or updates a queue.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1301,9 +1200,7 @@ public Mono> deleteExceptionPolicyWithResponse(String exceptionPo
      *     exceptionPolicyId: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1324,15 +1221,12 @@ public Mono> deleteExceptionPolicyWithResponse(String exceptionPo
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a queue that can contain jobs to be routed along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a queue that can contain jobs to be routed along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
     Mono> upsertQueueWithResponse(String queueId, BinaryData resource,
         RequestOptions requestOptions) {
-        // Convenience API is not generated, as operation 'upsertQueue' is 'application/merge-patch+json' and
-        // stream-style-serialization is not enabled
         return this.serviceClient.upsertQueueWithResponseAsync(queueId, resource, requestOptions);
     }
 
@@ -1522,9 +1416,7 @@ public Mono createQueue(CreateQueueOptions createQueueOptions) {
 
     /**
      * Retrieves an existing queue by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1544,8 +1436,7 @@ public Mono createQueue(CreateQueueOptions createQueueOptions) {
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a queue that can contain jobs to be routed along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a queue that can contain jobs to be routed along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1555,28 +1446,14 @@ public Mono> getQueueWithResponse(String queueId, RequestOp
 
     /**
      * Retrieves existing queues.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1656,11 +1533,13 @@ public PagedFlux listDistributionPolicies() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listDistributionPolicies(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(DistributionPolicy.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1723,12 +1602,14 @@ public PagedFlux listClassificationPolicies() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listClassificationPolicies(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux
                 .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                     pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                    pagedResponse.getValue().stream()
+                    pagedResponse.getValue()
+                        .stream()
                         .map(protocolMethodData -> protocolMethodData.toObject(ClassificationPolicy.class))
                         .collect(Collectors.toList()),
                     pagedResponse.getContinuationToken(), null));
@@ -1792,11 +1673,13 @@ public PagedFlux listExceptionPolicies() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listExceptionPolicies(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(ExceptionPolicy.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1859,11 +1742,13 @@ public PagedFlux listQueues() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listQueues(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(RouterQueue.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1889,4 +1774,252 @@ public Mono deleteQueue(String queueId) {
         RequestOptions requestOptions = new RequestOptions();
         return deleteQueueWithResponse(queueId, requestOptions).flatMap(FluxUtil::toMono);
     }
+
+    /**
+     * Creates or updates a distribution policy.
+     *
+     * @param distributionPolicyId Id of a distribution policy.
+     * @param resource The resource instance.
+     * @param ifMatch The request should only proceed if an entity matches this string.
+     * @param ifUnmodifiedSince The request should only proceed if the entity was not modified after this time.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return policy governing how jobs are distributed to workers on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Mono upsertDistributionPolicy(String distributionPolicyId,
+        DistributionPolicyInternal resource, String ifMatch, OffsetDateTime ifUnmodifiedSince) {
+        // Generated convenience method for upsertDistributionPolicyWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        if (ifMatch != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_MATCH, ifMatch);
+        }
+        if (ifUnmodifiedSince != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_UNMODIFIED_SINCE,
+                String.valueOf(new DateTimeRfc1123(ifUnmodifiedSince)));
+        }
+        JsonMergePatchHelper.getDistributionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getDistributionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertDistributionPolicyWithResponse(distributionPolicyId, resourceInBinaryData, requestOptions)
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(DistributionPolicyInternal.class));
+    }
+
+    /**
+     * Creates or updates a distribution policy.
+     *
+     * @param distributionPolicyId Id of a distribution policy.
+     * @param resource The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return policy governing how jobs are distributed to workers on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Mono upsertDistributionPolicy(String distributionPolicyId,
+        DistributionPolicyInternal resource) {
+        // Generated convenience method for upsertDistributionPolicyWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getDistributionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getDistributionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertDistributionPolicyWithResponse(distributionPolicyId, resourceInBinaryData, requestOptions)
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(DistributionPolicyInternal.class));
+    }
+
+    /**
+     * Creates or updates a classification policy.
+     *
+     * @param classificationPolicyId Id of a classification policy.
+     * @param resource The resource instance.
+     * @param ifMatch The request should only proceed if an entity matches this string.
+     * @param ifUnmodifiedSince The request should only proceed if the entity was not modified after this time.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a container for the rules that govern how jobs are classified on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Mono upsertClassificationPolicy(String classificationPolicyId,
+        ClassificationPolicyInternal resource, String ifMatch, OffsetDateTime ifUnmodifiedSince) {
+        // Generated convenience method for upsertClassificationPolicyWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        if (ifMatch != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_MATCH, ifMatch);
+        }
+        if (ifUnmodifiedSince != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_UNMODIFIED_SINCE,
+                String.valueOf(new DateTimeRfc1123(ifUnmodifiedSince)));
+        }
+        JsonMergePatchHelper.getClassificationPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getClassificationPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertClassificationPolicyWithResponse(classificationPolicyId, resourceInBinaryData, requestOptions)
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(ClassificationPolicyInternal.class));
+    }
+
+    /**
+     * Creates or updates a classification policy.
+     *
+     * @param classificationPolicyId Id of a classification policy.
+     * @param resource The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a container for the rules that govern how jobs are classified on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Mono upsertClassificationPolicy(String classificationPolicyId,
+        ClassificationPolicyInternal resource) {
+        // Generated convenience method for upsertClassificationPolicyWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getClassificationPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getClassificationPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertClassificationPolicyWithResponse(classificationPolicyId, resourceInBinaryData, requestOptions)
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(ClassificationPolicyInternal.class));
+    }
+
+    /**
+     * Creates or updates a exception policy.
+     *
+     * @param exceptionPolicyId Id of an exception policy.
+     * @param resource The resource instance.
+     * @param ifMatch The request should only proceed if an entity matches this string.
+     * @param ifUnmodifiedSince The request should only proceed if the entity was not modified after this time.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a policy that defines actions to execute when exception are triggered on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Mono upsertExceptionPolicy(String exceptionPolicyId, ExceptionPolicyInternal resource,
+        String ifMatch, OffsetDateTime ifUnmodifiedSince) {
+        // Generated convenience method for upsertExceptionPolicyWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        if (ifMatch != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_MATCH, ifMatch);
+        }
+        if (ifUnmodifiedSince != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_UNMODIFIED_SINCE,
+                String.valueOf(new DateTimeRfc1123(ifUnmodifiedSince)));
+        }
+        JsonMergePatchHelper.getExceptionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getExceptionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertExceptionPolicyWithResponse(exceptionPolicyId, resourceInBinaryData, requestOptions)
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(ExceptionPolicyInternal.class));
+    }
+
+    /**
+     * Creates or updates a exception policy.
+     *
+     * @param exceptionPolicyId Id of an exception policy.
+     * @param resource The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a policy that defines actions to execute when exception are triggered on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Mono upsertExceptionPolicy(String exceptionPolicyId, ExceptionPolicyInternal resource) {
+        // Generated convenience method for upsertExceptionPolicyWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getExceptionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getExceptionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertExceptionPolicyWithResponse(exceptionPolicyId, resourceInBinaryData, requestOptions)
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(ExceptionPolicyInternal.class));
+    }
+
+    /**
+     * Creates or updates a queue.
+     *
+     * @param queueId Id of a queue.
+     * @param resource The resource instance.
+     * @param ifMatch The request should only proceed if an entity matches this string.
+     * @param ifUnmodifiedSince The request should only proceed if the entity was not modified after this time.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a queue that can contain jobs to be routed on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Mono upsertQueue(String queueId, RouterQueueInternal resource, String ifMatch,
+        OffsetDateTime ifUnmodifiedSince) {
+        // Generated convenience method for upsertQueueWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        if (ifMatch != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_MATCH, ifMatch);
+        }
+        if (ifUnmodifiedSince != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_UNMODIFIED_SINCE,
+                String.valueOf(new DateTimeRfc1123(ifUnmodifiedSince)));
+        }
+        JsonMergePatchHelper.getRouterQueueInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getRouterQueueInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertQueueWithResponse(queueId, resourceInBinaryData, requestOptions).flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(RouterQueueInternal.class));
+    }
+
+    /**
+     * Creates or updates a queue.
+     *
+     * @param queueId Id of a queue.
+     * @param resource The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a queue that can contain jobs to be routed on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Mono upsertQueue(String queueId, RouterQueueInternal resource) {
+        // Generated convenience method for upsertQueueWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getRouterQueueInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getRouterQueueInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertQueueWithResponse(queueId, resourceInBinaryData, requestOptions).flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(RouterQueueInternal.class));
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAdministrationClient.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAdministrationClient.java
index 441aed1278c5..cafc5de100ba 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAdministrationClient.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAdministrationClient.java
@@ -4,26 +4,11 @@
 package com.azure.communication.jobrouter;
 
 import com.azure.communication.jobrouter.implementation.JobRouterAdministrationClientImpl;
-import com.azure.communication.jobrouter.implementation.accesshelpers.ClassificationPolicyConstructorProxy;
-import com.azure.communication.jobrouter.implementation.accesshelpers.DistributionPolicyConstructorProxy;
-import com.azure.communication.jobrouter.implementation.accesshelpers.ExceptionPolicyConstructorProxy;
-import com.azure.communication.jobrouter.implementation.accesshelpers.RouterQueueConstructorProxy;
-import com.azure.communication.jobrouter.implementation.converters.ClassificationPolicyAdapter;
-import com.azure.communication.jobrouter.implementation.converters.DistributionPolicyAdapter;
-import com.azure.communication.jobrouter.implementation.converters.ExceptionPolicyAdapter;
-import com.azure.communication.jobrouter.implementation.converters.QueueAdapter;
+import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper;
 import com.azure.communication.jobrouter.implementation.models.ClassificationPolicyInternal;
 import com.azure.communication.jobrouter.implementation.models.DistributionPolicyInternal;
 import com.azure.communication.jobrouter.implementation.models.ExceptionPolicyInternal;
 import com.azure.communication.jobrouter.implementation.models.RouterQueueInternal;
-import com.azure.communication.jobrouter.models.ClassificationPolicy;
-import com.azure.communication.jobrouter.models.CreateClassificationPolicyOptions;
-import com.azure.communication.jobrouter.models.CreateDistributionPolicyOptions;
-import com.azure.communication.jobrouter.models.CreateExceptionPolicyOptions;
-import com.azure.communication.jobrouter.models.CreateQueueOptions;
-import com.azure.communication.jobrouter.models.DistributionPolicy;
-import com.azure.communication.jobrouter.models.ExceptionPolicy;
-import com.azure.communication.jobrouter.models.RouterQueue;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.ReturnType;
 import com.azure.core.annotation.ServiceClient;
@@ -32,11 +17,30 @@
 import com.azure.core.exception.HttpResponseException;
 import com.azure.core.exception.ResourceModifiedException;
 import com.azure.core.exception.ResourceNotFoundException;
+import com.azure.core.http.HttpHeaderName;
 import com.azure.core.http.rest.PagedIterable;
 import com.azure.core.http.rest.RequestOptions;
 import com.azure.core.http.rest.Response;
 import com.azure.core.http.rest.SimpleResponse;
 import com.azure.core.util.BinaryData;
+import com.azure.core.util.DateTimeRfc1123;
+import java.time.OffsetDateTime;
+import com.azure.communication.jobrouter.implementation.accesshelpers.ClassificationPolicyConstructorProxy;
+import com.azure.communication.jobrouter.implementation.accesshelpers.DistributionPolicyConstructorProxy;
+import com.azure.communication.jobrouter.implementation.accesshelpers.ExceptionPolicyConstructorProxy;
+import com.azure.communication.jobrouter.implementation.accesshelpers.RouterQueueConstructorProxy;
+import com.azure.communication.jobrouter.implementation.converters.ClassificationPolicyAdapter;
+import com.azure.communication.jobrouter.implementation.converters.DistributionPolicyAdapter;
+import com.azure.communication.jobrouter.implementation.converters.ExceptionPolicyAdapter;
+import com.azure.communication.jobrouter.implementation.converters.QueueAdapter;
+import com.azure.communication.jobrouter.models.ClassificationPolicy;
+import com.azure.communication.jobrouter.models.CreateClassificationPolicyOptions;
+import com.azure.communication.jobrouter.models.CreateDistributionPolicyOptions;
+import com.azure.communication.jobrouter.models.CreateExceptionPolicyOptions;
+import com.azure.communication.jobrouter.models.CreateQueueOptions;
+import com.azure.communication.jobrouter.models.DistributionPolicy;
+import com.azure.communication.jobrouter.models.ExceptionPolicy;
+import com.azure.communication.jobrouter.models.RouterQueue;
 
 /**
  * Initializes a new instance of the synchronous JobRouterAdministrationClient type.
@@ -59,34 +63,15 @@ public final class JobRouterAdministrationClient {
 
     /**
      * Creates or updates a distribution policy.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -94,15 +79,14 @@ public final class JobRouterAdministrationClient {
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -110,6 +94,7 @@ public final class JobRouterAdministrationClient {
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -130,8 +115,6 @@ public final class JobRouterAdministrationClient {
     @ServiceMethod(returns = ReturnType.SINGLE)
     Response upsertDistributionPolicyWithResponse(String distributionPolicyId, BinaryData resource,
         RequestOptions requestOptions) {
-        // Convenience API is not generated, as operation 'upsertDistributionPolicy' is 'application/merge-patch+json'
-        // and stream-style-serialization is not enabled
         return this.serviceClient.upsertDistributionPolicyWithResponse(distributionPolicyId, resource, requestOptions);
     }
 
@@ -326,9 +309,7 @@ public Response createDistributionPolicyWithResponse(
 
     /**
      * Retrieves an existing distribution policy by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -336,6 +317,7 @@ public Response createDistributionPolicyWithResponse(
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -360,28 +342,14 @@ public Response getDistributionPolicyWithResponse(String distributio
 
     /**
      * Retrieves existing distribution policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -389,6 +357,7 @@ public Response getDistributionPolicyWithResponse(String distributio
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -429,34 +398,15 @@ public Response deleteDistributionPolicyWithResponse(String distributionPo
 
     /**
      * Creates or updates a classification policy.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -465,19 +415,20 @@ public Response deleteDistributionPolicyWithResponse(String distributionPo
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -486,12 +437,15 @@ public Response deleteDistributionPolicyWithResponse(String distributionPo
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -510,8 +464,6 @@ public Response deleteDistributionPolicyWithResponse(String distributionPo
     @ServiceMethod(returns = ReturnType.SINGLE)
     Response upsertClassificationPolicyWithResponse(String classificationPolicyId, BinaryData resource,
         RequestOptions requestOptions) {
-        // Convenience API is not generated, as operation 'upsertClassificationPolicy' is 'application/merge-patch+json'
-        // and stream-style-serialization is not enabled
         return this.serviceClient.upsertClassificationPolicyWithResponse(classificationPolicyId, resource,
             requestOptions);
     }
@@ -729,9 +681,7 @@ public Response createClassificationPolicyWithResponse(
 
     /**
      * Retrieves an existing classification policy by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -740,12 +690,15 @@ public Response createClassificationPolicyWithResponse(
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -768,28 +721,14 @@ public Response getClassificationPolicyWithResponse(String classific
 
     /**
      * Retrieves existing classification policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -798,12 +737,15 @@ public Response getClassificationPolicyWithResponse(String classific
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -842,34 +784,15 @@ public Response deleteClassificationPolicyWithResponse(String classificati
 
     /**
      * Creates or updates a exception policy.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -877,11 +800,13 @@ public Response deleteClassificationPolicyWithResponse(String classificati
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -889,9 +814,7 @@ public Response deleteClassificationPolicyWithResponse(String classificati
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -899,11 +822,13 @@ public Response deleteClassificationPolicyWithResponse(String classificati
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -925,8 +850,6 @@ public Response deleteClassificationPolicyWithResponse(String classificati
     @ServiceMethod(returns = ReturnType.SINGLE)
     Response upsertExceptionPolicyWithResponse(String exceptionPolicyId, BinaryData resource,
         RequestOptions requestOptions) {
-        // Convenience API is not generated, as operation 'upsertExceptionPolicy' is 'application/merge-patch+json' and
-        // stream-style-serialization is not enabled
         return this.serviceClient.upsertExceptionPolicyWithResponse(exceptionPolicyId, resource, requestOptions);
     }
 
@@ -1248,34 +1171,15 @@ public Response deleteExceptionPolicyWithResponse(String exceptionPolicyId
 
     /**
      * Creates or updates a queue.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1288,9 +1192,7 @@ public Response deleteExceptionPolicyWithResponse(String exceptionPolicyId
      *     exceptionPolicyId: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1316,8 +1218,6 @@ public Response deleteExceptionPolicyWithResponse(String exceptionPolicyId
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
     Response upsertQueueWithResponse(String queueId, BinaryData resource, RequestOptions requestOptions) {
-        // Convenience API is not generated, as operation 'upsertQueue' is 'application/merge-patch+json' and
-        // stream-style-serialization is not enabled
         return this.serviceClient.upsertQueueWithResponse(queueId, resource, requestOptions);
     }
 
@@ -1503,9 +1403,7 @@ public RouterQueue createQueue(CreateQueueOptions createQueueOptions) {
 
     /**
      * Retrieves an existing queue by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1535,28 +1433,14 @@ public Response getQueueWithResponse(String queueId, RequestOptions
 
     /**
      * Retrieves existing queues.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1826,4 +1710,250 @@ public void deleteQueue(String queueId) {
         RequestOptions requestOptions = new RequestOptions();
         deleteQueueWithResponse(queueId, requestOptions).getValue();
     }
+
+    /**
+     * Creates or updates a distribution policy.
+     *
+     * @param distributionPolicyId Id of a distribution policy.
+     * @param resource The resource instance.
+     * @param ifMatch The request should only proceed if an entity matches this string.
+     * @param ifUnmodifiedSince The request should only proceed if the entity was not modified after this time.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return policy governing how jobs are distributed to workers.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    DistributionPolicyInternal upsertDistributionPolicy(String distributionPolicyId,
+        DistributionPolicyInternal resource, String ifMatch, OffsetDateTime ifUnmodifiedSince) {
+        // Generated convenience method for upsertDistributionPolicyWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        if (ifMatch != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_MATCH, ifMatch);
+        }
+        if (ifUnmodifiedSince != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_UNMODIFIED_SINCE,
+                String.valueOf(new DateTimeRfc1123(ifUnmodifiedSince)));
+        }
+        JsonMergePatchHelper.getDistributionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getDistributionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertDistributionPolicyWithResponse(distributionPolicyId, resourceInBinaryData, requestOptions)
+            .getValue()
+            .toObject(DistributionPolicyInternal.class);
+    }
+
+    /**
+     * Creates or updates a distribution policy.
+     *
+     * @param distributionPolicyId Id of a distribution policy.
+     * @param resource The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return policy governing how jobs are distributed to workers.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    DistributionPolicyInternal upsertDistributionPolicy(String distributionPolicyId,
+        DistributionPolicyInternal resource) {
+        // Generated convenience method for upsertDistributionPolicyWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getDistributionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getDistributionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertDistributionPolicyWithResponse(distributionPolicyId, resourceInBinaryData, requestOptions)
+            .getValue()
+            .toObject(DistributionPolicyInternal.class);
+    }
+
+    /**
+     * Creates or updates a classification policy.
+     *
+     * @param classificationPolicyId Id of a classification policy.
+     * @param resource The resource instance.
+     * @param ifMatch The request should only proceed if an entity matches this string.
+     * @param ifUnmodifiedSince The request should only proceed if the entity was not modified after this time.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a container for the rules that govern how jobs are classified.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    ClassificationPolicyInternal upsertClassificationPolicy(String classificationPolicyId,
+        ClassificationPolicyInternal resource, String ifMatch, OffsetDateTime ifUnmodifiedSince) {
+        // Generated convenience method for upsertClassificationPolicyWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        if (ifMatch != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_MATCH, ifMatch);
+        }
+        if (ifUnmodifiedSince != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_UNMODIFIED_SINCE,
+                String.valueOf(new DateTimeRfc1123(ifUnmodifiedSince)));
+        }
+        JsonMergePatchHelper.getClassificationPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getClassificationPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertClassificationPolicyWithResponse(classificationPolicyId, resourceInBinaryData, requestOptions)
+            .getValue()
+            .toObject(ClassificationPolicyInternal.class);
+    }
+
+    /**
+     * Creates or updates a classification policy.
+     *
+     * @param classificationPolicyId Id of a classification policy.
+     * @param resource The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a container for the rules that govern how jobs are classified.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    ClassificationPolicyInternal upsertClassificationPolicy(String classificationPolicyId,
+        ClassificationPolicyInternal resource) {
+        // Generated convenience method for upsertClassificationPolicyWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getClassificationPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getClassificationPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertClassificationPolicyWithResponse(classificationPolicyId, resourceInBinaryData, requestOptions)
+            .getValue()
+            .toObject(ClassificationPolicyInternal.class);
+    }
+
+    /**
+     * Creates or updates a exception policy.
+     *
+     * @param exceptionPolicyId Id of an exception policy.
+     * @param resource The resource instance.
+     * @param ifMatch The request should only proceed if an entity matches this string.
+     * @param ifUnmodifiedSince The request should only proceed if the entity was not modified after this time.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a policy that defines actions to execute when exception are triggered.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    ExceptionPolicyInternal upsertExceptionPolicy(String exceptionPolicyId, ExceptionPolicyInternal resource,
+        String ifMatch, OffsetDateTime ifUnmodifiedSince) {
+        // Generated convenience method for upsertExceptionPolicyWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        if (ifMatch != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_MATCH, ifMatch);
+        }
+        if (ifUnmodifiedSince != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_UNMODIFIED_SINCE,
+                String.valueOf(new DateTimeRfc1123(ifUnmodifiedSince)));
+        }
+        JsonMergePatchHelper.getExceptionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getExceptionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertExceptionPolicyWithResponse(exceptionPolicyId, resourceInBinaryData, requestOptions).getValue()
+            .toObject(ExceptionPolicyInternal.class);
+    }
+
+    /**
+     * Creates or updates a exception policy.
+     *
+     * @param exceptionPolicyId Id of an exception policy.
+     * @param resource The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a policy that defines actions to execute when exception are triggered.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    ExceptionPolicyInternal upsertExceptionPolicy(String exceptionPolicyId, ExceptionPolicyInternal resource) {
+        // Generated convenience method for upsertExceptionPolicyWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getExceptionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getExceptionPolicyInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertExceptionPolicyWithResponse(exceptionPolicyId, resourceInBinaryData, requestOptions).getValue()
+            .toObject(ExceptionPolicyInternal.class);
+    }
+
+    /**
+     * Creates or updates a queue.
+     *
+     * @param queueId Id of a queue.
+     * @param resource The resource instance.
+     * @param ifMatch The request should only proceed if an entity matches this string.
+     * @param ifUnmodifiedSince The request should only proceed if the entity was not modified after this time.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a queue that can contain jobs to be routed.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    RouterQueueInternal upsertQueue(String queueId, RouterQueueInternal resource, String ifMatch,
+        OffsetDateTime ifUnmodifiedSince) {
+        // Generated convenience method for upsertQueueWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        if (ifMatch != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_MATCH, ifMatch);
+        }
+        if (ifUnmodifiedSince != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_UNMODIFIED_SINCE,
+                String.valueOf(new DateTimeRfc1123(ifUnmodifiedSince)));
+        }
+        JsonMergePatchHelper.getRouterQueueInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getRouterQueueInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertQueueWithResponse(queueId, resourceInBinaryData, requestOptions).getValue()
+            .toObject(RouterQueueInternal.class);
+    }
+
+    /**
+     * Creates or updates a queue.
+     *
+     * @param queueId Id of a queue.
+     * @param resource The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a queue that can contain jobs to be routed.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    RouterQueueInternal upsertQueue(String queueId, RouterQueueInternal resource) {
+        // Generated convenience method for upsertQueueWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getRouterQueueInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getRouterQueueInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertQueueWithResponse(queueId, resourceInBinaryData, requestOptions).getValue()
+            .toObject(RouterQueueInternal.class);
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAdministrationClientBuilder.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAdministrationClientBuilder.java
index 55d42b11f47d..e3d36ca9ef21 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAdministrationClientBuilder.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAdministrationClientBuilder.java
@@ -3,18 +3,15 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.communication.jobrouter;
 
-import com.azure.communication.common.implementation.CommunicationConnectionString;
+import com.azure.core.client.traits.TokenCredentialTrait;
+import com.azure.core.client.traits.KeyCredentialTrait;
+import com.azure.core.client.traits.ConnectionStringTrait;
 import com.azure.communication.jobrouter.implementation.JobRouterAdministrationClientImpl;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.ServiceClientBuilder;
 import com.azure.core.client.traits.ConfigurationTrait;
-import com.azure.core.client.traits.ConnectionStringTrait;
 import com.azure.core.client.traits.EndpointTrait;
 import com.azure.core.client.traits.HttpTrait;
-import com.azure.core.client.traits.KeyCredentialTrait;
-import com.azure.core.client.traits.TokenCredentialTrait;
-import com.azure.core.credential.KeyCredential;
-import com.azure.core.credential.TokenCredential;
 import com.azure.core.http.HttpClient;
 import com.azure.core.http.HttpHeaderName;
 import com.azure.core.http.HttpHeaders;
@@ -24,8 +21,8 @@
 import com.azure.core.http.policy.AddDatePolicy;
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.RequestIdPolicy;
@@ -42,6 +39,9 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import com.azure.communication.common.implementation.CommunicationConnectionString;
+import com.azure.core.credential.KeyCredential;
+import com.azure.core.credential.TokenCredential;
 
 /**
  * A builder for creating a new instance of the JobRouterAdministrationClient type.
@@ -265,17 +265,21 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
         policies.add(new AddDatePolicy());
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAsyncClient.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAsyncClient.java
index d5e799d9758e..9823fe64d2b2 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAsyncClient.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterAsyncClient.java
@@ -4,10 +4,7 @@
 package com.azure.communication.jobrouter;
 
 import com.azure.communication.jobrouter.implementation.JobRouterClientImpl;
-import com.azure.communication.jobrouter.implementation.accesshelpers.RouterJobConstructorProxy;
-import com.azure.communication.jobrouter.implementation.accesshelpers.RouterWorkerConstructorProxy;
-import com.azure.communication.jobrouter.implementation.converters.JobAdapter;
-import com.azure.communication.jobrouter.implementation.converters.WorkerAdapter;
+import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper;
 import com.azure.communication.jobrouter.implementation.models.CancelJobOptionsInternal;
 import com.azure.communication.jobrouter.implementation.models.CancelJobResultInternal;
 import com.azure.communication.jobrouter.implementation.models.CloseJobOptionsInternal;
@@ -21,13 +18,8 @@
 import com.azure.communication.jobrouter.implementation.models.RouterJobInternal;
 import com.azure.communication.jobrouter.implementation.models.RouterWorkerInternal;
 import com.azure.communication.jobrouter.models.AcceptJobOfferResult;
-import com.azure.communication.jobrouter.models.CreateJobOptions;
-import com.azure.communication.jobrouter.models.CreateWorkerOptions;
-import com.azure.communication.jobrouter.models.RouterJob;
 import com.azure.communication.jobrouter.models.RouterJobPositionDetails;
 import com.azure.communication.jobrouter.models.RouterJobStatusSelector;
-import com.azure.communication.jobrouter.models.RouterQueueStatistics;
-import com.azure.communication.jobrouter.models.RouterWorker;
 import com.azure.communication.jobrouter.models.RouterWorkerStateSelector;
 import com.azure.communication.jobrouter.models.UnassignJobOptions;
 import com.azure.communication.jobrouter.models.UnassignJobResult;
@@ -39,6 +31,7 @@
 import com.azure.core.exception.HttpResponseException;
 import com.azure.core.exception.ResourceModifiedException;
 import com.azure.core.exception.ResourceNotFoundException;
+import com.azure.core.http.HttpHeaderName;
 import com.azure.core.http.rest.PagedFlux;
 import com.azure.core.http.rest.PagedResponse;
 import com.azure.core.http.rest.PagedResponseBase;
@@ -46,11 +39,21 @@
 import com.azure.core.http.rest.Response;
 import com.azure.core.http.rest.SimpleResponse;
 import com.azure.core.util.BinaryData;
+import com.azure.core.util.DateTimeRfc1123;
 import com.azure.core.util.FluxUtil;
 import java.time.OffsetDateTime;
 import java.util.stream.Collectors;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
+import com.azure.communication.jobrouter.implementation.accesshelpers.RouterJobConstructorProxy;
+import com.azure.communication.jobrouter.implementation.accesshelpers.RouterWorkerConstructorProxy;
+import com.azure.communication.jobrouter.implementation.converters.JobAdapter;
+import com.azure.communication.jobrouter.implementation.converters.WorkerAdapter;
+import com.azure.communication.jobrouter.models.CreateJobOptions;
+import com.azure.communication.jobrouter.models.CreateWorkerOptions;
+import com.azure.communication.jobrouter.models.RouterJob;
+import com.azure.communication.jobrouter.models.RouterQueueStatistics;
+import com.azure.communication.jobrouter.models.RouterWorker;
 
 /**
  * Initializes a new instance of the asynchronous JobRouterClient type.
@@ -73,34 +76,15 @@ public final class JobRouterAsyncClient {
 
     /**
      * Creates or updates a router job.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -115,8 +99,8 @@ public final class JobRouterAsyncClient {
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -134,7 +118,7 @@ public final class JobRouterAsyncClient {
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -144,18 +128,17 @@ public final class JobRouterAsyncClient {
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -170,8 +153,8 @@ public final class JobRouterAsyncClient {
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -189,7 +172,7 @@ public final class JobRouterAsyncClient {
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -199,12 +182,13 @@ public final class JobRouterAsyncClient {
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -221,8 +205,6 @@ public final class JobRouterAsyncClient { @Generated @ServiceMethod(returns = ReturnType.SINGLE) Mono> upsertJobWithResponse(String jobId, BinaryData resource, RequestOptions requestOptions) { - // Convenience API is not generated, as operation 'upsertJob' is 'application/merge-patch+json' and - // stream-style-serialization is not enabled return this.serviceClient.upsertJobWithResponseAsync(jobId, resource, requestOptions); } @@ -554,9 +536,7 @@ public Mono createJob(CreateJobOptions createJobOptions) { /** * Retrieves an existing job by Id. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -571,8 +551,8 @@ public Mono createJob(CreateJobOptions createJobOptions) {
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -590,7 +570,7 @@ public Mono createJob(CreateJobOptions createJobOptions) {
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -600,12 +580,13 @@ public Mono createJob(CreateJobOptions createJobOptions) {
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -763,67 +744,20 @@ public Mono cancelJob(String jobId, RequestOptions requestOptions) { /** * Retrieves list of jobs based on filter parameters. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
statusStringNoIf specified, filter jobs by status. Allowed values: "all", "pendingClassification", "queued", "assigned", - * "completed", "closed", "cancelled", "classificationFailed", "created", "pendingSchedule", "scheduled", - * "scheduleFailed", "waitingForActivation", "active".
queueIdStringNoIf specified, filter jobs by queue.
channelIdStringNoIf specified, filter jobs by channel.
classificationPolicyIdStringNoIf specified, filter jobs by classificationPolicy.
scheduledBeforeOffsetDateTimeNoIf specified, filter on jobs that was scheduled before or at given timestamp. Range: (-Inf, - * scheduledBefore].
scheduledAfterOffsetDateTimeNoIf specified, filter on jobs that was scheduled at or after given value. Range: [scheduledAfter, +Inf).
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
statusStringNoIf specified, filter jobs by status. Allowed values: "all", "pendingClassification", "queued", "assigned", "completed", "closed", "cancelled", "classificationFailed", "created", "pendingSchedule", "scheduled", "scheduleFailed", "waitingForActivation", "active".
queueIdStringNoIf specified, filter jobs by queue.
channelIdStringNoIf specified, filter jobs by channel.
classificationPolicyIdStringNoIf specified, filter jobs by classificationPolicy.
scheduledBeforeOffsetDateTimeNoIf specified, filter on jobs that was scheduled before or at given timestamp. Range: (-Inf, scheduledBefore].
scheduledAfterOffsetDateTimeNoIf specified, filter on jobs that was scheduled at or after given value. Range: [scheduledAfter, +Inf).
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -838,8 +772,8 @@ public Mono cancelJob(String jobId, RequestOptions requestOptions) {
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -857,7 +791,7 @@ public Mono cancelJob(String jobId, RequestOptions requestOptions) {
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -867,12 +801,13 @@ public Mono cancelJob(String jobId, RequestOptions requestOptions) {
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -892,9 +827,7 @@ public PagedFlux listJobs(RequestOptions requestOptions) { /** * Gets a job's position details. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     jobId: String (Required)
@@ -921,17 +854,13 @@ public Mono> getQueuePositionWithResponse(String jobId, Req
 
     /**
      * Unassign a job.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     suspendMatching: Boolean (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     jobId: String (Required)
@@ -946,8 +875,7 @@ public Mono> getQueuePositionWithResponse(String jobId, Req
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return response payload after a job has been successfully unassigned along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return response payload after a job has been successfully unassigned along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -958,9 +886,7 @@ public Mono> unassignJobWithResponse(String jobId, String a
 
     /**
      * Accepts an offer to work on a job and returns a 409/Conflict if another agent accepted the job already.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     assignmentId: String (Required)
@@ -976,8 +902,7 @@ public Mono> unassignJobWithResponse(String jobId, String a
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return response containing ids for the worker, job, and assignment from an accepted offer along with
-     * {@link Response} on successful completion of {@link Mono}.
+     * @return response containing ids for the worker, job, and assignment from an accepted offer along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1052,9 +977,7 @@ public Mono declineJobOffer(String workerId, String offerId, Request
 
     /**
      * Retrieves a queue's statistics.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     queueId: String (Required)
@@ -1082,34 +1005,15 @@ public Mono> getQueueStatisticsWithResponse(String queueId,
 
     /**
      * Creates or updates a worker.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1127,26 +1031,26 @@ public Mono> getQueueStatisticsWithResponse(String queueId,
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -1154,9 +1058,7 @@ public Mono> getQueueStatisticsWithResponse(String queueId,
      *     maxConcurrentOffers: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1174,26 +1076,26 @@ public Mono> getQueueStatisticsWithResponse(String queueId,
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -1215,8 +1117,6 @@ public Mono> getQueueStatisticsWithResponse(String queueId,
     @ServiceMethod(returns = ReturnType.SINGLE)
     Mono> upsertWorkerWithResponse(String workerId, BinaryData resource,
         RequestOptions requestOptions) {
-        // Convenience API is not generated, as operation 'upsertWorker' is 'application/merge-patch+json' and
-        // stream-style-serialization is not enabled
         return this.serviceClient.upsertWorkerWithResponseAsync(workerId, resource, requestOptions);
     }
 
@@ -1526,9 +1426,7 @@ public Mono createWorker(CreateWorkerOptions createWorkerOptions)
 
     /**
      * Retrieves an existing worker by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1546,26 +1444,26 @@ public Mono createWorker(CreateWorkerOptions createWorkerOptions)
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -1607,54 +1505,18 @@ public Mono> deleteWorkerWithResponse(String workerId, RequestOpt
 
     /**
      * Retrieves existing workers.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
stateStringNoIf specified, select workers by worker state. Allowed values: "active", "draining", "inactive", "all".
channelIdStringNoIf specified, select workers who have a channel configuration with this channel.
queueIdStringNoIf specified, select workers who are assigned to this queue.
hasCapacityBooleanNoIf set to true, select only workers who have capacity for the channel specified by `channelId` or for any - * channel if `channelId` not specified. If set to false, then will return all workers including workers without any - * capacity for jobs. Defaults to false.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
stateStringNoIf specified, select workers by worker state. Allowed values: "active", "draining", "inactive", "all".
channelIdStringNoIf specified, select workers who have a channel configuration with this channel.
queueIdStringNoIf specified, select workers who are assigned to this queue.
hasCapacityBooleanNoIf set to true, select only workers who have capacity for the channel specified by `channelId` or for any channel if `channelId` not specified. If set to false, then will return all workers including workers without any capacity for jobs. Defaults to false.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1672,26 +1534,26 @@ public Mono> deleteWorkerWithResponse(String workerId, RequestOpt
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -1818,11 +1680,13 @@ public PagedFlux listJobs(RouterJobStatusSelector status, String queu
         }
         PagedFlux pagedFluxResponse = listJobs(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(RouterJob.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1845,11 +1709,13 @@ public PagedFlux listJobs() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listJobs(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(RouterJob.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1910,8 +1776,7 @@ public Mono unassignJob(String jobId, String assignmentId) {
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return response containing ids for the worker, job, and assignment from an accepted offer on successful
-     * completion of {@link Mono}.
+     * @return response containing ids for the worker, job, and assignment from an accepted offer on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -2040,11 +1905,13 @@ public PagedFlux listWorkers(RouterWorkerStateSelector state, Stri
         }
         PagedFlux pagedFluxResponse = listWorkers(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(RouterWorker.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -2067,11 +1934,13 @@ public PagedFlux listWorkers() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listWorkers(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(RouterWorker.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -2427,4 +2296,124 @@ Mono declineJobOffer(String workerId, String offe
         return declineJobOfferWithResponse(workerId, offerId, requestOptions).flatMap(FluxUtil::toMono)
             .map(protocolMethodData -> protocolMethodData.toObject(DeclineJobOfferResultInternal.class));
     }
+
+    /**
+     * Creates or updates a router job.
+     *
+     * @param jobId Id of a job.
+     * @param resource The resource instance.
+     * @param ifMatch The request should only proceed if an entity matches this string.
+     * @param ifUnmodifiedSince The request should only proceed if the entity was not modified after this time.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a unit of work to be routed on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Mono upsertJob(String jobId, RouterJobInternal resource, String ifMatch,
+        OffsetDateTime ifUnmodifiedSince) {
+        // Generated convenience method for upsertJobWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        if (ifMatch != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_MATCH, ifMatch);
+        }
+        if (ifUnmodifiedSince != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_UNMODIFIED_SINCE,
+                String.valueOf(new DateTimeRfc1123(ifUnmodifiedSince)));
+        }
+        JsonMergePatchHelper.getRouterJobInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getRouterJobInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertJobWithResponse(jobId, resourceInBinaryData, requestOptions).flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(RouterJobInternal.class));
+    }
+
+    /**
+     * Creates or updates a router job.
+     *
+     * @param jobId Id of a job.
+     * @param resource The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a unit of work to be routed on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Mono upsertJob(String jobId, RouterJobInternal resource) {
+        // Generated convenience method for upsertJobWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getRouterJobInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getRouterJobInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertJobWithResponse(jobId, resourceInBinaryData, requestOptions).flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(RouterJobInternal.class));
+    }
+
+    /**
+     * Creates or updates a worker.
+     *
+     * @param workerId Id of a worker.
+     * @param resource The resource instance.
+     * @param ifMatch The request should only proceed if an entity matches this string.
+     * @param ifUnmodifiedSince The request should only proceed if the entity was not modified after this time.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return an entity for jobs to be routed to on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Mono upsertWorker(String workerId, RouterWorkerInternal resource, String ifMatch,
+        OffsetDateTime ifUnmodifiedSince) {
+        // Generated convenience method for upsertWorkerWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        if (ifMatch != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_MATCH, ifMatch);
+        }
+        if (ifUnmodifiedSince != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_UNMODIFIED_SINCE,
+                String.valueOf(new DateTimeRfc1123(ifUnmodifiedSince)));
+        }
+        JsonMergePatchHelper.getRouterWorkerInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getRouterWorkerInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertWorkerWithResponse(workerId, resourceInBinaryData, requestOptions).flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(RouterWorkerInternal.class));
+    }
+
+    /**
+     * Creates or updates a worker.
+     *
+     * @param workerId Id of a worker.
+     * @param resource The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return an entity for jobs to be routed to on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Mono upsertWorker(String workerId, RouterWorkerInternal resource) {
+        // Generated convenience method for upsertWorkerWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getRouterWorkerInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getRouterWorkerInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertWorkerWithResponse(workerId, resourceInBinaryData, requestOptions).flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(RouterWorkerInternal.class));
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterClient.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterClient.java
index 84fb6a865702..b9d4a7b823ad 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterClient.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterClient.java
@@ -4,10 +4,7 @@
 package com.azure.communication.jobrouter;
 
 import com.azure.communication.jobrouter.implementation.JobRouterClientImpl;
-import com.azure.communication.jobrouter.implementation.accesshelpers.RouterJobConstructorProxy;
-import com.azure.communication.jobrouter.implementation.accesshelpers.RouterWorkerConstructorProxy;
-import com.azure.communication.jobrouter.implementation.converters.JobAdapter;
-import com.azure.communication.jobrouter.implementation.converters.WorkerAdapter;
+import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper;
 import com.azure.communication.jobrouter.implementation.models.CancelJobOptionsInternal;
 import com.azure.communication.jobrouter.implementation.models.CancelJobResultInternal;
 import com.azure.communication.jobrouter.implementation.models.CloseJobOptionsInternal;
@@ -21,13 +18,8 @@
 import com.azure.communication.jobrouter.implementation.models.RouterJobInternal;
 import com.azure.communication.jobrouter.implementation.models.RouterWorkerInternal;
 import com.azure.communication.jobrouter.models.AcceptJobOfferResult;
-import com.azure.communication.jobrouter.models.CreateJobOptions;
-import com.azure.communication.jobrouter.models.CreateWorkerOptions;
-import com.azure.communication.jobrouter.models.RouterJob;
 import com.azure.communication.jobrouter.models.RouterJobPositionDetails;
 import com.azure.communication.jobrouter.models.RouterJobStatusSelector;
-import com.azure.communication.jobrouter.models.RouterQueueStatistics;
-import com.azure.communication.jobrouter.models.RouterWorker;
 import com.azure.communication.jobrouter.models.RouterWorkerStateSelector;
 import com.azure.communication.jobrouter.models.UnassignJobOptions;
 import com.azure.communication.jobrouter.models.UnassignJobResult;
@@ -39,12 +31,23 @@
 import com.azure.core.exception.HttpResponseException;
 import com.azure.core.exception.ResourceModifiedException;
 import com.azure.core.exception.ResourceNotFoundException;
+import com.azure.core.http.HttpHeaderName;
 import com.azure.core.http.rest.PagedIterable;
 import com.azure.core.http.rest.RequestOptions;
 import com.azure.core.http.rest.Response;
 import com.azure.core.http.rest.SimpleResponse;
 import com.azure.core.util.BinaryData;
+import com.azure.core.util.DateTimeRfc1123;
 import java.time.OffsetDateTime;
+import com.azure.communication.jobrouter.implementation.accesshelpers.RouterJobConstructorProxy;
+import com.azure.communication.jobrouter.implementation.accesshelpers.RouterWorkerConstructorProxy;
+import com.azure.communication.jobrouter.implementation.converters.JobAdapter;
+import com.azure.communication.jobrouter.implementation.converters.WorkerAdapter;
+import com.azure.communication.jobrouter.models.CreateJobOptions;
+import com.azure.communication.jobrouter.models.CreateWorkerOptions;
+import com.azure.communication.jobrouter.models.RouterJob;
+import com.azure.communication.jobrouter.models.RouterQueueStatistics;
+import com.azure.communication.jobrouter.models.RouterWorker;
 
 /**
  * Initializes a new instance of the synchronous JobRouterClient type.
@@ -67,34 +70,15 @@ public final class JobRouterClient {
 
     /**
      * Creates or updates a router job.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -109,8 +93,8 @@ public final class JobRouterClient {
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -128,7 +112,7 @@ public final class JobRouterClient {
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -138,18 +122,17 @@ public final class JobRouterClient {
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -164,8 +147,8 @@ public final class JobRouterClient {
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -183,7 +166,7 @@ public final class JobRouterClient {
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -193,12 +176,13 @@ public final class JobRouterClient {
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -215,8 +199,6 @@ public final class JobRouterClient { @Generated @ServiceMethod(returns = ReturnType.SINGLE) Response upsertJobWithResponse(String jobId, BinaryData resource, RequestOptions requestOptions) { - // Convenience API is not generated, as operation 'upsertJob' is 'application/merge-patch+json' and - // stream-style-serialization is not enabled return this.serviceClient.upsertJobWithResponse(jobId, resource, requestOptions); } @@ -556,9 +538,7 @@ public RouterJob createJob(CreateJobOptions createJobOptions) { /** * Retrieves an existing job by Id. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -573,8 +553,8 @@ public RouterJob createJob(CreateJobOptions createJobOptions) {
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -592,7 +572,7 @@ public RouterJob createJob(CreateJobOptions createJobOptions) {
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -602,12 +582,13 @@ public RouterJob createJob(CreateJobOptions createJobOptions) {
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -769,67 +750,20 @@ public BinaryData cancelJob(String jobId, RequestOptions requestOptions) { /** * Retrieves list of jobs based on filter parameters. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
statusStringNoIf specified, filter jobs by status. Allowed values: "all", "pendingClassification", "queued", "assigned", - * "completed", "closed", "cancelled", "classificationFailed", "created", "pendingSchedule", "scheduled", - * "scheduleFailed", "waitingForActivation", "active".
queueIdStringNoIf specified, filter jobs by queue.
channelIdStringNoIf specified, filter jobs by channel.
classificationPolicyIdStringNoIf specified, filter jobs by classificationPolicy.
scheduledBeforeOffsetDateTimeNoIf specified, filter on jobs that was scheduled before or at given timestamp. Range: (-Inf, - * scheduledBefore].
scheduledAfterOffsetDateTimeNoIf specified, filter on jobs that was scheduled at or after given value. Range: [scheduledAfter, +Inf).
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
statusStringNoIf specified, filter jobs by status. Allowed values: "all", "pendingClassification", "queued", "assigned", "completed", "closed", "cancelled", "classificationFailed", "created", "pendingSchedule", "scheduled", "scheduleFailed", "waitingForActivation", "active".
queueIdStringNoIf specified, filter jobs by queue.
channelIdStringNoIf specified, filter jobs by channel.
classificationPolicyIdStringNoIf specified, filter jobs by classificationPolicy.
scheduledBeforeOffsetDateTimeNoIf specified, filter on jobs that was scheduled before or at given timestamp. Range: (-Inf, scheduledBefore].
scheduledAfterOffsetDateTimeNoIf specified, filter on jobs that was scheduled at or after given value. Range: [scheduledAfter, +Inf).
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -844,8 +778,8 @@ public BinaryData cancelJob(String jobId, RequestOptions requestOptions) {
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -863,7 +797,7 @@ public BinaryData cancelJob(String jobId, RequestOptions requestOptions) {
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -873,12 +807,13 @@ public BinaryData cancelJob(String jobId, RequestOptions requestOptions) {
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -898,9 +833,7 @@ public PagedIterable listJobs(RequestOptions requestOptions) { /** * Gets a job's position details. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     jobId: String (Required)
@@ -927,17 +860,13 @@ public Response getQueuePositionWithResponse(String jobId, RequestOp
 
     /**
      * Unassign a job.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     suspendMatching: Boolean (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     jobId: String (Required)
@@ -963,9 +892,7 @@ public Response unassignJobWithResponse(String jobId, String assignm
 
     /**
      * Accepts an offer to work on a job and returns a 409/Conflict if another agent accepted the job already.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     assignmentId: String (Required)
@@ -981,8 +908,7 @@ public Response unassignJobWithResponse(String jobId, String assignm
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return response containing ids for the worker, job, and assignment from an accepted offer along with
-     * {@link Response}.
+     * @return response containing ids for the worker, job, and assignment from an accepted offer along with {@link Response}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1058,9 +984,7 @@ public BinaryData declineJobOffer(String workerId, String offerId, RequestOption
 
     /**
      * Retrieves a queue's statistics.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     queueId: String (Required)
@@ -1088,34 +1012,15 @@ public Response getQueueStatisticsWithResponse(String queueId, Reque
 
     /**
      * Creates or updates a worker.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1133,26 +1038,26 @@ public Response getQueueStatisticsWithResponse(String queueId, Reque
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -1160,9 +1065,7 @@ public Response getQueueStatisticsWithResponse(String queueId, Reque
      *     maxConcurrentOffers: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1180,26 +1083,26 @@ public Response getQueueStatisticsWithResponse(String queueId, Reque
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -1220,8 +1123,6 @@ public Response getQueueStatisticsWithResponse(String queueId, Reque
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
     Response upsertWorkerWithResponse(String workerId, BinaryData resource, RequestOptions requestOptions) {
-        // Convenience API is not generated, as operation 'upsertWorker' is 'application/merge-patch+json' and
-        // stream-style-serialization is not enabled
         return this.serviceClient.upsertWorkerWithResponse(workerId, resource, requestOptions);
     }
 
@@ -1535,9 +1436,7 @@ public RouterWorker createWorker(CreateWorkerOptions createWorkerOptions) {
 
     /**
      * Retrieves an existing worker by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1555,26 +1454,26 @@ public RouterWorker createWorker(CreateWorkerOptions createWorkerOptions) {
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -1616,54 +1515,18 @@ public Response deleteWorkerWithResponse(String workerId, RequestOptions r
 
     /**
      * Retrieves existing workers.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
stateStringNoIf specified, select workers by worker state. Allowed values: "active", "draining", "inactive", "all".
channelIdStringNoIf specified, select workers who have a channel configuration with this channel.
queueIdStringNoIf specified, select workers who are assigned to this queue.
hasCapacityBooleanNoIf set to true, select only workers who have capacity for the channel specified by `channelId` or for any - * channel if `channelId` not specified. If set to false, then will return all workers including workers without any - * capacity for jobs. Defaults to false.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
stateStringNoIf specified, select workers by worker state. Allowed values: "active", "draining", "inactive", "all".
channelIdStringNoIf specified, select workers who have a channel configuration with this channel.
queueIdStringNoIf specified, select workers who are assigned to this queue.
hasCapacityBooleanNoIf set to true, select only workers who have capacity for the channel specified by `channelId` or for any channel if `channelId` not specified. If set to false, then will return all workers including workers without any capacity for jobs. Defaults to false.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1681,26 +1544,26 @@ public Response deleteWorkerWithResponse(String workerId, RequestOptions r
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -2389,4 +2252,124 @@ DeclineJobOfferResultInternal declineJobOffer(String workerId, String offerId,
         return declineJobOfferWithResponse(workerId, offerId, requestOptions).getValue()
             .toObject(DeclineJobOfferResultInternal.class);
     }
+
+    /**
+     * Creates or updates a router job.
+     *
+     * @param jobId Id of a job.
+     * @param resource The resource instance.
+     * @param ifMatch The request should only proceed if an entity matches this string.
+     * @param ifUnmodifiedSince The request should only proceed if the entity was not modified after this time.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a unit of work to be routed.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    RouterJobInternal upsertJob(String jobId, RouterJobInternal resource, String ifMatch,
+        OffsetDateTime ifUnmodifiedSince) {
+        // Generated convenience method for upsertJobWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        if (ifMatch != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_MATCH, ifMatch);
+        }
+        if (ifUnmodifiedSince != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_UNMODIFIED_SINCE,
+                String.valueOf(new DateTimeRfc1123(ifUnmodifiedSince)));
+        }
+        JsonMergePatchHelper.getRouterJobInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getRouterJobInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertJobWithResponse(jobId, resourceInBinaryData, requestOptions).getValue()
+            .toObject(RouterJobInternal.class);
+    }
+
+    /**
+     * Creates or updates a router job.
+     *
+     * @param jobId Id of a job.
+     * @param resource The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a unit of work to be routed.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    RouterJobInternal upsertJob(String jobId, RouterJobInternal resource) {
+        // Generated convenience method for upsertJobWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getRouterJobInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getRouterJobInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertJobWithResponse(jobId, resourceInBinaryData, requestOptions).getValue()
+            .toObject(RouterJobInternal.class);
+    }
+
+    /**
+     * Creates or updates a worker.
+     *
+     * @param workerId Id of a worker.
+     * @param resource The resource instance.
+     * @param ifMatch The request should only proceed if an entity matches this string.
+     * @param ifUnmodifiedSince The request should only proceed if the entity was not modified after this time.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return an entity for jobs to be routed to.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    RouterWorkerInternal upsertWorker(String workerId, RouterWorkerInternal resource, String ifMatch,
+        OffsetDateTime ifUnmodifiedSince) {
+        // Generated convenience method for upsertWorkerWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        if (ifMatch != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_MATCH, ifMatch);
+        }
+        if (ifUnmodifiedSince != null) {
+            requestOptions.setHeader(HttpHeaderName.IF_UNMODIFIED_SINCE,
+                String.valueOf(new DateTimeRfc1123(ifUnmodifiedSince)));
+        }
+        JsonMergePatchHelper.getRouterWorkerInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getRouterWorkerInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertWorkerWithResponse(workerId, resourceInBinaryData, requestOptions).getValue()
+            .toObject(RouterWorkerInternal.class);
+    }
+
+    /**
+     * Creates or updates a worker.
+     *
+     * @param workerId Id of a worker.
+     * @param resource The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return an entity for jobs to be routed to.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    RouterWorkerInternal upsertWorker(String workerId, RouterWorkerInternal resource) {
+        // Generated convenience method for upsertWorkerWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getRouterWorkerInternalAccessor().prepareModelForJsonMergePatch(resource, true);
+        BinaryData resourceInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(resource).toBytes());
+        JsonMergePatchHelper.getRouterWorkerInternalAccessor().prepareModelForJsonMergePatch(resource, false);
+        return upsertWorkerWithResponse(workerId, resourceInBinaryData, requestOptions).getValue()
+            .toObject(RouterWorkerInternal.class);
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterClientBuilder.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterClientBuilder.java
index 1b2ca0cc07a9..dc21bd5288ec 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterClientBuilder.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterClientBuilder.java
@@ -3,18 +3,15 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.communication.jobrouter;
 
-import com.azure.communication.common.implementation.CommunicationConnectionString;
+import com.azure.core.client.traits.TokenCredentialTrait;
+import com.azure.core.client.traits.KeyCredentialTrait;
+import com.azure.core.client.traits.ConnectionStringTrait;
 import com.azure.communication.jobrouter.implementation.JobRouterClientImpl;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.ServiceClientBuilder;
 import com.azure.core.client.traits.ConfigurationTrait;
-import com.azure.core.client.traits.ConnectionStringTrait;
 import com.azure.core.client.traits.EndpointTrait;
 import com.azure.core.client.traits.HttpTrait;
-import com.azure.core.client.traits.KeyCredentialTrait;
-import com.azure.core.client.traits.TokenCredentialTrait;
-import com.azure.core.credential.KeyCredential;
-import com.azure.core.credential.TokenCredential;
 import com.azure.core.http.HttpClient;
 import com.azure.core.http.HttpHeaderName;
 import com.azure.core.http.HttpHeaders;
@@ -24,8 +21,8 @@
 import com.azure.core.http.policy.AddDatePolicy;
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.RequestIdPolicy;
@@ -42,6 +39,9 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import com.azure.communication.common.implementation.CommunicationConnectionString;
+import com.azure.core.credential.KeyCredential;
+import com.azure.core.credential.TokenCredential;
 
 /**
  * A builder for creating a new instance of the JobRouterClient type.
@@ -263,17 +263,21 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
         policies.add(new AddDatePolicy());
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/JobRouterAdministrationClientImpl.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/JobRouterAdministrationClientImpl.java
index 1ee22ed8e203..174e4d72b182 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/JobRouterAdministrationClientImpl.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/JobRouterAdministrationClientImpl.java
@@ -152,8 +152,7 @@ public JobRouterAdministrationClientImpl(HttpPipeline httpPipeline, SerializerAd
     }
 
     /**
-     * The interface defining all the services for JobRouterAdministrationClient to be used by the proxy service to
-     * perform REST calls.
+     * The interface defining all the services for JobRouterAdministrationClient to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}")
     @ServiceInterface(name = "JobRouterAdministrat")
@@ -589,34 +588,15 @@ Response listQueuesNextSync(@PathParam(value = "nextLink", encoded =
 
     /**
      * Creates or updates a distribution policy.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -624,15 +604,14 @@ Response listQueuesNextSync(@PathParam(value = "nextLink", encoded =
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -640,6 +619,7 @@ Response listQueuesNextSync(@PathParam(value = "nextLink", encoded =
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -654,8 +634,7 @@ Response listQueuesNextSync(@PathParam(value = "nextLink", encoded =
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return policy governing how jobs are distributed to workers along with {@link Response} on successful completion
-     * of {@link Mono}.
+     * @return policy governing how jobs are distributed to workers along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> upsertDistributionPolicyWithResponseAsync(String distributionPolicyId,
@@ -669,34 +648,15 @@ public Mono> upsertDistributionPolicyWithResponseAsync(Stri
 
     /**
      * Creates or updates a distribution policy.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -704,15 +664,14 @@ public Mono> upsertDistributionPolicyWithResponseAsync(Stri
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -720,6 +679,7 @@ public Mono> upsertDistributionPolicyWithResponseAsync(Stri
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -747,9 +707,7 @@ public Response upsertDistributionPolicyWithResponse(String distribu
 
     /**
      * Retrieves an existing distribution policy by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -757,6 +715,7 @@ public Response upsertDistributionPolicyWithResponse(String distribu
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -770,8 +729,7 @@ public Response upsertDistributionPolicyWithResponse(String distribu
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return policy governing how jobs are distributed to workers along with {@link Response} on successful completion
-     * of {@link Mono}.
+     * @return policy governing how jobs are distributed to workers along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getDistributionPolicyWithResponseAsync(String distributionPolicyId,
@@ -783,9 +741,7 @@ public Mono> getDistributionPolicyWithResponseAsync(String
 
     /**
      * Retrieves an existing distribution policy by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -793,6 +749,7 @@ public Mono> getDistributionPolicyWithResponseAsync(String
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -818,28 +775,14 @@ public Response getDistributionPolicyWithResponse(String distributio
 
     /**
      * Retrieves existing distribution policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -847,6 +790,7 @@ public Response getDistributionPolicyWithResponse(String distributio
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -859,8 +803,7 @@ public Response getDistributionPolicyWithResponse(String distributio
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of DistributionPolicy items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of DistributionPolicy items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listDistributionPoliciesSinglePageAsync(RequestOptions requestOptions) {
@@ -874,28 +817,14 @@ private Mono> listDistributionPoliciesSinglePageAsync(
 
     /**
      * Retrieves existing distribution policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -903,6 +832,7 @@ private Mono> listDistributionPoliciesSinglePageAsync(
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -948,28 +878,14 @@ public PagedFlux listDistributionPoliciesAsync(RequestOptions reques
 
     /**
      * Retrieves existing distribution policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -977,6 +893,7 @@ public PagedFlux listDistributionPoliciesAsync(RequestOptions reques
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -1002,28 +919,14 @@ private PagedResponse listDistributionPoliciesSinglePage(RequestOpti
 
     /**
      * Retrieves existing distribution policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1031,6 +934,7 @@ private PagedResponse listDistributionPoliciesSinglePage(RequestOpti
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -1114,34 +1018,15 @@ public Response deleteDistributionPolicyWithResponse(String distributionPo
 
     /**
      * Creates or updates a classification policy.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1150,19 +1035,20 @@ public Response deleteDistributionPolicyWithResponse(String distributionPo
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1171,12 +1057,15 @@ public Response deleteDistributionPolicyWithResponse(String distributionPo
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -1189,8 +1078,7 @@ public Response deleteDistributionPolicyWithResponse(String distributionPo
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a container for the rules that govern how jobs are classified along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return a container for the rules that govern how jobs are classified along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> upsertClassificationPolicyWithResponseAsync(String classificationPolicyId,
@@ -1204,34 +1092,15 @@ public Mono> upsertClassificationPolicyWithResponseAsync(St
 
     /**
      * Creates or updates a classification policy.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1240,19 +1109,20 @@ public Mono> upsertClassificationPolicyWithResponseAsync(St
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1261,12 +1131,15 @@ public Mono> upsertClassificationPolicyWithResponseAsync(St
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -1292,9 +1165,7 @@ public Response upsertClassificationPolicyWithResponse(String classi
 
     /**
      * Retrieves an existing classification policy by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1303,12 +1174,15 @@ public Response upsertClassificationPolicyWithResponse(String classi
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -1320,8 +1194,7 @@ public Response upsertClassificationPolicyWithResponse(String classi
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a container for the rules that govern how jobs are classified along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return a container for the rules that govern how jobs are classified along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getClassificationPolicyWithResponseAsync(String classificationPolicyId,
@@ -1333,9 +1206,7 @@ public Mono> getClassificationPolicyWithResponseAsync(Strin
 
     /**
      * Retrieves an existing classification policy by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1344,12 +1215,15 @@ public Mono> getClassificationPolicyWithResponseAsync(Strin
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -1373,28 +1247,14 @@ public Response getClassificationPolicyWithResponse(String classific
 
     /**
      * Retrieves existing classification policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1403,12 +1263,15 @@ public Response getClassificationPolicyWithResponse(String classific
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -1419,8 +1282,7 @@ public Response getClassificationPolicyWithResponse(String classific
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of ClassificationPolicy items along with {@link PagedResponse} on successful completion
-     * of {@link Mono}.
+     * @return paged collection of ClassificationPolicy items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listClassificationPoliciesSinglePageAsync(RequestOptions requestOptions) {
@@ -1434,28 +1296,14 @@ private Mono> listClassificationPoliciesSinglePageAsyn
 
     /**
      * Retrieves existing classification policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1464,12 +1312,15 @@ private Mono> listClassificationPoliciesSinglePageAsyn
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -1513,28 +1364,14 @@ public PagedFlux listClassificationPoliciesAsync(RequestOptions requ
 
     /**
      * Retrieves existing classification policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1543,12 +1380,15 @@ public PagedFlux listClassificationPoliciesAsync(RequestOptions requ
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -1572,28 +1412,14 @@ private PagedResponse listClassificationPoliciesSinglePage(RequestOp
 
     /**
      * Retrieves existing classification policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1602,12 +1428,15 @@ private PagedResponse listClassificationPoliciesSinglePage(RequestOp
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -1689,34 +1518,15 @@ public Response deleteClassificationPolicyWithResponse(String classificati
 
     /**
      * Creates or updates a exception policy.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1724,11 +1534,13 @@ public Response deleteClassificationPolicyWithResponse(String classificati
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -1736,9 +1548,7 @@ public Response deleteClassificationPolicyWithResponse(String classificati
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1746,11 +1556,13 @@ public Response deleteClassificationPolicyWithResponse(String classificati
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -1766,8 +1578,7 @@ public Response deleteClassificationPolicyWithResponse(String classificati
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a policy that defines actions to execute when exception are triggered along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return a policy that defines actions to execute when exception are triggered along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> upsertExceptionPolicyWithResponseAsync(String exceptionPolicyId,
@@ -1781,34 +1592,15 @@ public Mono> upsertExceptionPolicyWithResponseAsync(String
 
     /**
      * Creates or updates a exception policy.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1816,11 +1608,13 @@ public Mono> upsertExceptionPolicyWithResponseAsync(String
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -1828,9 +1622,7 @@ public Mono> upsertExceptionPolicyWithResponseAsync(String
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1838,11 +1630,13 @@ public Mono> upsertExceptionPolicyWithResponseAsync(String
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -1871,9 +1665,7 @@ public Response upsertExceptionPolicyWithResponse(String exceptionPo
 
     /**
      * Retrieves an existing exception policy by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1881,11 +1673,13 @@ public Response upsertExceptionPolicyWithResponse(String exceptionPo
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -1900,8 +1694,7 @@ public Response upsertExceptionPolicyWithResponse(String exceptionPo
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a policy that defines actions to execute when exception are triggered along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return a policy that defines actions to execute when exception are triggered along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getExceptionPolicyWithResponseAsync(String exceptionPolicyId,
@@ -1913,9 +1706,7 @@ public Mono> getExceptionPolicyWithResponseAsync(String exc
 
     /**
      * Retrieves an existing exception policy by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1923,11 +1714,13 @@ public Mono> getExceptionPolicyWithResponseAsync(String exc
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -1954,28 +1747,14 @@ public Response getExceptionPolicyWithResponse(String exceptionPolic
 
     /**
      * Retrieves existing exception policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1983,11 +1762,13 @@ public Response getExceptionPolicyWithResponse(String exceptionPolic
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -2001,8 +1782,7 @@ public Response getExceptionPolicyWithResponse(String exceptionPolic
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of ExceptionPolicy items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of ExceptionPolicy items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listExceptionPoliciesSinglePageAsync(RequestOptions requestOptions) {
@@ -2016,28 +1796,14 @@ private Mono> listExceptionPoliciesSinglePageAsync(Req
 
     /**
      * Retrieves existing exception policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2045,11 +1811,13 @@ private Mono> listExceptionPoliciesSinglePageAsync(Req
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -2096,28 +1864,14 @@ public PagedFlux listExceptionPoliciesAsync(RequestOptions requestOp
 
     /**
      * Retrieves existing exception policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2125,11 +1879,13 @@ public PagedFlux listExceptionPoliciesAsync(RequestOptions requestOp
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -2156,28 +1912,14 @@ private PagedResponse listExceptionPoliciesSinglePage(RequestOptions
 
     /**
      * Retrieves existing exception policies.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2185,11 +1927,13 @@ private PagedResponse listExceptionPoliciesSinglePage(RequestOptions
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -2273,34 +2017,15 @@ public Response deleteExceptionPolicyWithResponse(String exceptionPolicyId
 
     /**
      * Creates or updates a queue.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2313,9 +2038,7 @@ public Response deleteExceptionPolicyWithResponse(String exceptionPolicyId
      *     exceptionPolicyId: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2336,8 +2059,7 @@ public Response deleteExceptionPolicyWithResponse(String exceptionPolicyId
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a queue that can contain jobs to be routed along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a queue that can contain jobs to be routed along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> upsertQueueWithResponseAsync(String queueId, BinaryData resource,
@@ -2350,34 +2072,15 @@ public Mono> upsertQueueWithResponseAsync(String queueId, B
 
     /**
      * Creates or updates a queue.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2390,9 +2093,7 @@ public Mono> upsertQueueWithResponseAsync(String queueId, B
      *     exceptionPolicyId: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2426,9 +2127,7 @@ public Response upsertQueueWithResponse(String queueId, BinaryData r
 
     /**
      * Retrieves an existing queue by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2448,8 +2147,7 @@ public Response upsertQueueWithResponse(String queueId, BinaryData r
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a queue that can contain jobs to be routed along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a queue that can contain jobs to be routed along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getQueueWithResponseAsync(String queueId, RequestOptions requestOptions) {
@@ -2460,9 +2158,7 @@ public Mono> getQueueWithResponseAsync(String queueId, Requ
 
     /**
      * Retrieves an existing queue by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2493,28 +2189,14 @@ public Response getQueueWithResponse(String queueId, RequestOptions
 
     /**
      * Retrieves existing queues.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2533,8 +2215,7 @@ public Response getQueueWithResponse(String queueId, RequestOptions
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of RouterQueue items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of RouterQueue items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listQueuesSinglePageAsync(RequestOptions requestOptions) {
@@ -2548,28 +2229,14 @@ private Mono> listQueuesSinglePageAsync(RequestOptions
 
     /**
      * Retrieves existing queues.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2621,28 +2288,14 @@ public PagedFlux listQueuesAsync(RequestOptions requestOptions) {
 
     /**
      * Retrieves existing queues.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2674,28 +2327,14 @@ private PagedResponse listQueuesSinglePage(RequestOptions requestOpt
 
     /**
      * Retrieves existing queues.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2785,9 +2424,7 @@ public Response deleteQueueWithResponse(String queueId, RequestOptions req
      * Retrieves existing distribution policies.
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2795,6 +2432,7 @@ public Response deleteQueueWithResponse(String queueId, RequestOptions req
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -2810,8 +2448,7 @@ public Response deleteQueueWithResponse(String queueId, RequestOptions req
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of DistributionPolicy items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of DistributionPolicy items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listDistributionPoliciesNextSinglePageAsync(String nextLink,
@@ -2828,9 +2465,7 @@ private Mono> listDistributionPoliciesNextSinglePageAs
      * Retrieves existing distribution policies.
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2838,6 +2473,7 @@ private Mono> listDistributionPoliciesNextSinglePageAs
      *     name: String (Optional)
      *     offerExpiresAfterSeconds: Double (Optional)
      *     mode (Optional): {
+     *         kind: String(bestWorker/longestIdle/roundRobin) (Optional)
      *         minConcurrentOffers: Integer (Optional)
      *         maxConcurrentOffers: Integer (Optional)
      *         bypassSelectors: Boolean (Optional)
@@ -2869,9 +2505,7 @@ private PagedResponse listDistributionPoliciesNextSinglePage(String
      * Retrieves existing classification policies.
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2880,12 +2514,15 @@ private PagedResponse listDistributionPoliciesNextSinglePage(String
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -2899,8 +2536,7 @@ private PagedResponse listDistributionPoliciesNextSinglePage(String
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of ClassificationPolicy items along with {@link PagedResponse} on successful completion
-     * of {@link Mono}.
+     * @return paged collection of ClassificationPolicy items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listClassificationPoliciesNextSinglePageAsync(String nextLink,
@@ -2917,9 +2553,7 @@ private Mono> listClassificationPoliciesNextSinglePage
      * Retrieves existing classification policies.
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2928,12 +2562,15 @@ private Mono> listClassificationPoliciesNextSinglePage
      *     fallbackQueueId: String (Optional)
      *     queueSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      *     prioritizationRule (Optional): {
+     *         kind: String(directMap/expression/function/static/webhook) (Optional)
      *     }
      *     workerSelectorAttachments (Optional): [
      *          (Optional){
+     *             kind: String(conditional/passThrough/ruleEngine/static/weightedAllocation) (Optional)
      *         }
      *     ]
      * }
@@ -2963,9 +2600,7 @@ private PagedResponse listClassificationPoliciesNextSinglePage(Strin
      * Retrieves existing exception policies.
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2973,11 +2608,13 @@ private PagedResponse listClassificationPoliciesNextSinglePage(Strin
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -2994,8 +2631,7 @@ private PagedResponse listClassificationPoliciesNextSinglePage(Strin
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of ExceptionPolicy items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of ExceptionPolicy items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listExceptionPoliciesNextSinglePageAsync(String nextLink,
@@ -3011,9 +2647,7 @@ private Mono> listExceptionPoliciesNextSinglePageAsync
      * Retrieves existing exception policies.
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -3021,11 +2655,13 @@ private Mono> listExceptionPoliciesNextSinglePageAsync
      *     name: String (Optional)
      *     exceptionRules (Optional): [
      *          (Optional){
-     *             id: String (Required)
-     *             trigger (Required): {
+     *             id: String (Optional, Required on create)
+     *             trigger (Optional, Required on create): {
+     *                 kind: String(queueLength/waitTime) (Optional)
      *             }
-     *             actions (Required): [
-     *                  (Required){
+     *             actions (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     kind: String(cancel/manualReclassify/reclassify) (Optional)
      *                     id: String (Optional)
      *                 }
      *             ]
@@ -3058,9 +2694,7 @@ private PagedResponse listExceptionPoliciesNextSinglePage(String nex
      * Retrieves existing queues.
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -3082,8 +2716,7 @@ private PagedResponse listExceptionPoliciesNextSinglePage(String nex
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of RouterQueue items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of RouterQueue items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listQueuesNextSinglePageAsync(String nextLink,
@@ -3100,9 +2733,7 @@ private Mono> listQueuesNextSinglePageAsync(String nex
      * Retrieves existing queues.
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/JobRouterClientImpl.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/JobRouterClientImpl.java
index f3d61933e837..6989998edbe9 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/JobRouterClientImpl.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/JobRouterClientImpl.java
@@ -152,8 +152,7 @@ public JobRouterClientImpl(HttpPipeline httpPipeline, SerializerAdapter serializ
     }
 
     /**
-     * The interface defining all the services for JobRouterClient to be used by the proxy service to perform REST
-     * calls.
+     * The interface defining all the services for JobRouterClient to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}")
     @ServiceInterface(name = "JobRouterClient")
@@ -559,34 +558,15 @@ Response listWorkersNextSync(@PathParam(value = "nextLink", encoded
 
     /**
      * Creates or updates a router job.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -601,8 +581,8 @@ Response listWorkersNextSync(@PathParam(value = "nextLink", encoded
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -620,7 +600,7 @@ Response listWorkersNextSync(@PathParam(value = "nextLink", encoded
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -630,18 +610,17 @@ Response listWorkersNextSync(@PathParam(value = "nextLink", encoded
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -656,8 +635,8 @@ Response listWorkersNextSync(@PathParam(value = "nextLink", encoded
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -675,7 +654,7 @@ Response listWorkersNextSync(@PathParam(value = "nextLink", encoded
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -685,12 +664,13 @@ Response listWorkersNextSync(@PathParam(value = "nextLink", encoded
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -715,34 +695,15 @@ public Mono> upsertJobWithResponseAsync(String jobId, Binar /** * Creates or updates a router job. - *

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -757,8 +718,8 @@ public Mono> upsertJobWithResponseAsync(String jobId, Binar
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -776,7 +737,7 @@ public Mono> upsertJobWithResponseAsync(String jobId, Binar
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -786,18 +747,17 @@ public Mono> upsertJobWithResponseAsync(String jobId, Binar
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -812,8 +772,8 @@ public Mono> upsertJobWithResponseAsync(String jobId, Binar
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -831,7 +791,7 @@ public Mono> upsertJobWithResponseAsync(String jobId, Binar
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -841,12 +801,13 @@ public Mono> upsertJobWithResponseAsync(String jobId, Binar
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -871,9 +832,7 @@ public Response upsertJobWithResponse(String jobId, BinaryData resou /** * Retrieves an existing job by Id. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -888,8 +847,8 @@ public Response upsertJobWithResponse(String jobId, BinaryData resou
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -907,7 +866,7 @@ public Response upsertJobWithResponse(String jobId, BinaryData resou
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -917,12 +876,13 @@ public Response upsertJobWithResponse(String jobId, BinaryData resou
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -944,9 +904,7 @@ public Mono> getJobWithResponseAsync(String jobId, RequestO /** * Retrieves an existing job by Id. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -961,8 +919,8 @@ public Mono> getJobWithResponseAsync(String jobId, RequestO
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -980,7 +938,7 @@ public Mono> getJobWithResponseAsync(String jobId, RequestO
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -990,12 +948,13 @@ public Mono> getJobWithResponseAsync(String jobId, RequestO
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -1053,16 +1012,12 @@ public Response deleteJobWithResponse(String jobId, RequestOptions request /** * Reclassify a job. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      * }
@@ -1074,8 +1029,7 @@ public Response deleteJobWithResponse(String jobId, RequestOptions request
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return response payload from reclassifying a job along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return response payload from reclassifying a job along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> reclassifyJobWithResponseAsync(String jobId, RequestOptions requestOptions) {
@@ -1092,16 +1046,12 @@ public Mono> reclassifyJobWithResponseAsync(String jobId, R
 
     /**
      * Reclassify a job.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      * }
@@ -1130,18 +1080,14 @@ public Response reclassifyJobWithResponse(String jobId, RequestOptio
 
     /**
      * Submits request to cancel an existing job by Id while supplying free-form cancellation reason.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     note: String (Optional)
      *     dispositionCode: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      * }
@@ -1153,8 +1099,7 @@ public Response reclassifyJobWithResponse(String jobId, RequestOptio
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return response payload from cancelling a job along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return response payload from cancelling a job along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> cancelJobWithResponseAsync(String jobId, RequestOptions requestOptions) {
@@ -1171,18 +1116,14 @@ public Mono> cancelJobWithResponseAsync(String jobId, Reque
 
     /**
      * Submits request to cancel an existing job by Id while supplying free-form cancellation reason.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     note: String (Optional)
      *     dispositionCode: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      * }
@@ -1211,17 +1152,13 @@ public Response cancelJobWithResponse(String jobId, RequestOptions r
 
     /**
      * Completes an assigned job.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     note: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      * }
@@ -1234,8 +1171,7 @@ public Response cancelJobWithResponse(String jobId, RequestOptions r
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return response payload from completing a job along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return response payload from completing a job along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> completeJobWithResponseAsync(String jobId, String assignmentId,
@@ -1253,17 +1189,13 @@ public Mono> completeJobWithResponseAsync(String jobId, Str
 
     /**
      * Completes an assigned job.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     note: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      * }
@@ -1294,9 +1226,7 @@ public Response completeJobWithResponse(String jobId, String assignm
 
     /**
      * Closes a completed job.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     dispositionCode: String (Optional)
@@ -1304,9 +1234,7 @@ public Response completeJobWithResponse(String jobId, String assignm
      *     note: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      * }
@@ -1337,9 +1265,7 @@ public Mono> closeJobWithResponseAsync(String jobId, String
 
     /**
      * Closes a completed job.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     dispositionCode: String (Optional)
@@ -1347,9 +1273,7 @@ public Mono> closeJobWithResponseAsync(String jobId, String
      *     note: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      * }
@@ -1379,67 +1303,20 @@ public Response closeJobWithResponse(String jobId, String assignment
 
     /**
      * Retrieves list of jobs based on filter parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
statusStringNoIf specified, filter jobs by status. Allowed values: "all", "pendingClassification", "queued", "assigned", - * "completed", "closed", "cancelled", "classificationFailed", "created", "pendingSchedule", "scheduled", - * "scheduleFailed", "waitingForActivation", "active".
queueIdStringNoIf specified, filter jobs by queue.
channelIdStringNoIf specified, filter jobs by channel.
classificationPolicyIdStringNoIf specified, filter jobs by classificationPolicy.
scheduledBeforeOffsetDateTimeNoIf specified, filter on jobs that was scheduled before or at given timestamp. Range: (-Inf, - * scheduledBefore].
scheduledAfterOffsetDateTimeNoIf specified, filter on jobs that was scheduled at or after given value. Range: [scheduledAfter, +Inf).
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
statusStringNoIf specified, filter jobs by status. Allowed values: "all", "pendingClassification", "queued", "assigned", "completed", "closed", "cancelled", "classificationFailed", "created", "pendingSchedule", "scheduled", "scheduleFailed", "waitingForActivation", "active".
queueIdStringNoIf specified, filter jobs by queue.
channelIdStringNoIf specified, filter jobs by channel.
classificationPolicyIdStringNoIf specified, filter jobs by classificationPolicy.
scheduledBeforeOffsetDateTimeNoIf specified, filter on jobs that was scheduled before or at given timestamp. Range: (-Inf, scheduledBefore].
scheduledAfterOffsetDateTimeNoIf specified, filter on jobs that was scheduled at or after given value. Range: [scheduledAfter, +Inf).
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1454,8 +1331,8 @@ public Response closeJobWithResponse(String jobId, String assignment
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -1473,7 +1350,7 @@ public Response closeJobWithResponse(String jobId, String assignment
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -1483,12 +1360,13 @@ public Response closeJobWithResponse(String jobId, String assignment
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -1498,8 +1376,7 @@ public Response closeJobWithResponse(String jobId, String assignment * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return paged collection of RouterJob items along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return paged collection of RouterJob items along with {@link PagedResponse} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> listJobsSinglePageAsync(RequestOptions requestOptions) { @@ -1513,67 +1390,20 @@ private Mono> listJobsSinglePageAsync(RequestOptions r /** * Retrieves list of jobs based on filter parameters. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
statusStringNoIf specified, filter jobs by status. Allowed values: "all", "pendingClassification", "queued", "assigned", - * "completed", "closed", "cancelled", "classificationFailed", "created", "pendingSchedule", "scheduled", - * "scheduleFailed", "waitingForActivation", "active".
queueIdStringNoIf specified, filter jobs by queue.
channelIdStringNoIf specified, filter jobs by channel.
classificationPolicyIdStringNoIf specified, filter jobs by classificationPolicy.
scheduledBeforeOffsetDateTimeNoIf specified, filter on jobs that was scheduled before or at given timestamp. Range: (-Inf, - * scheduledBefore].
scheduledAfterOffsetDateTimeNoIf specified, filter on jobs that was scheduled at or after given value. Range: [scheduledAfter, +Inf).
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
statusStringNoIf specified, filter jobs by status. Allowed values: "all", "pendingClassification", "queued", "assigned", "completed", "closed", "cancelled", "classificationFailed", "created", "pendingSchedule", "scheduled", "scheduleFailed", "waitingForActivation", "active".
queueIdStringNoIf specified, filter jobs by queue.
channelIdStringNoIf specified, filter jobs by channel.
classificationPolicyIdStringNoIf specified, filter jobs by classificationPolicy.
scheduledBeforeOffsetDateTimeNoIf specified, filter on jobs that was scheduled before or at given timestamp. Range: (-Inf, scheduledBefore].
scheduledAfterOffsetDateTimeNoIf specified, filter on jobs that was scheduled at or after given value. Range: [scheduledAfter, +Inf).
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1588,8 +1418,8 @@ private Mono> listJobsSinglePageAsync(RequestOptions r
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -1607,7 +1437,7 @@ private Mono> listJobsSinglePageAsync(RequestOptions r
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -1617,12 +1447,13 @@ private Mono> listJobsSinglePageAsync(RequestOptions r
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -1665,67 +1496,20 @@ public PagedFlux listJobsAsync(RequestOptions requestOptions) { /** * Retrieves list of jobs based on filter parameters. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
statusStringNoIf specified, filter jobs by status. Allowed values: "all", "pendingClassification", "queued", "assigned", - * "completed", "closed", "cancelled", "classificationFailed", "created", "pendingSchedule", "scheduled", - * "scheduleFailed", "waitingForActivation", "active".
queueIdStringNoIf specified, filter jobs by queue.
channelIdStringNoIf specified, filter jobs by channel.
classificationPolicyIdStringNoIf specified, filter jobs by classificationPolicy.
scheduledBeforeOffsetDateTimeNoIf specified, filter on jobs that was scheduled before or at given timestamp. Range: (-Inf, - * scheduledBefore].
scheduledAfterOffsetDateTimeNoIf specified, filter on jobs that was scheduled at or after given value. Range: [scheduledAfter, +Inf).
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
statusStringNoIf specified, filter jobs by status. Allowed values: "all", "pendingClassification", "queued", "assigned", "completed", "closed", "cancelled", "classificationFailed", "created", "pendingSchedule", "scheduled", "scheduleFailed", "waitingForActivation", "active".
queueIdStringNoIf specified, filter jobs by queue.
channelIdStringNoIf specified, filter jobs by channel.
classificationPolicyIdStringNoIf specified, filter jobs by classificationPolicy.
scheduledBeforeOffsetDateTimeNoIf specified, filter on jobs that was scheduled before or at given timestamp. Range: (-Inf, scheduledBefore].
scheduledAfterOffsetDateTimeNoIf specified, filter on jobs that was scheduled at or after given value. Range: [scheduledAfter, +Inf).
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1740,8 +1524,8 @@ public PagedFlux listJobsAsync(RequestOptions requestOptions) {
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -1759,7 +1543,7 @@ public PagedFlux listJobsAsync(RequestOptions requestOptions) {
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -1769,12 +1553,13 @@ public PagedFlux listJobsAsync(RequestOptions requestOptions) {
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -1797,67 +1582,20 @@ private PagedResponse listJobsSinglePage(RequestOptions requestOptio /** * Retrieves list of jobs based on filter parameters. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
statusStringNoIf specified, filter jobs by status. Allowed values: "all", "pendingClassification", "queued", "assigned", - * "completed", "closed", "cancelled", "classificationFailed", "created", "pendingSchedule", "scheduled", - * "scheduleFailed", "waitingForActivation", "active".
queueIdStringNoIf specified, filter jobs by queue.
channelIdStringNoIf specified, filter jobs by channel.
classificationPolicyIdStringNoIf specified, filter jobs by classificationPolicy.
scheduledBeforeOffsetDateTimeNoIf specified, filter on jobs that was scheduled before or at given timestamp. Range: (-Inf, - * scheduledBefore].
scheduledAfterOffsetDateTimeNoIf specified, filter on jobs that was scheduled at or after given value. Range: [scheduledAfter, +Inf).
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
statusStringNoIf specified, filter jobs by status. Allowed values: "all", "pendingClassification", "queued", "assigned", "completed", "closed", "cancelled", "classificationFailed", "created", "pendingSchedule", "scheduled", "scheduleFailed", "waitingForActivation", "active".
queueIdStringNoIf specified, filter jobs by queue.
channelIdStringNoIf specified, filter jobs by channel.
classificationPolicyIdStringNoIf specified, filter jobs by classificationPolicy.
scheduledBeforeOffsetDateTimeNoIf specified, filter on jobs that was scheduled before or at given timestamp. Range: (-Inf, scheduledBefore].
scheduledAfterOffsetDateTimeNoIf specified, filter on jobs that was scheduled at or after given value. Range: [scheduledAfter, +Inf).
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -1872,8 +1610,8 @@ private PagedResponse listJobsSinglePage(RequestOptions requestOptio
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -1891,7 +1629,7 @@ private PagedResponse listJobsSinglePage(RequestOptions requestOptio
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -1901,12 +1639,13 @@ private PagedResponse listJobsSinglePage(RequestOptions requestOptio
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -1949,9 +1688,7 @@ public PagedIterable listJobs(RequestOptions requestOptions) { /** * Gets a job's position details. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     jobId: String (Required)
@@ -1979,9 +1716,7 @@ public Mono> getQueuePositionWithResponseAsync(String jobId
 
     /**
      * Gets a job's position details.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     jobId: String (Required)
@@ -2009,17 +1744,13 @@ public Response getQueuePositionWithResponse(String jobId, RequestOp
 
     /**
      * Unassign a job.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     suspendMatching: Boolean (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     jobId: String (Required)
@@ -2034,8 +1765,7 @@ public Response getQueuePositionWithResponse(String jobId, RequestOp
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return response payload after a job has been successfully unassigned along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return response payload after a job has been successfully unassigned along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> unassignJobWithResponseAsync(String jobId, String assignmentId,
@@ -2053,17 +1783,13 @@ public Mono> unassignJobWithResponseAsync(String jobId, Str
 
     /**
      * Unassign a job.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     suspendMatching: Boolean (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     jobId: String (Required)
@@ -2096,9 +1822,7 @@ public Response unassignJobWithResponse(String jobId, String assignm
 
     /**
      * Accepts an offer to work on a job and returns a 409/Conflict if another agent accepted the job already.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     assignmentId: String (Required)
@@ -2114,8 +1838,7 @@ public Response unassignJobWithResponse(String jobId, String assignm
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return response containing ids for the worker, job, and assignment from an accepted offer along with
-     * {@link Response} on successful completion of {@link Mono}.
+     * @return response containing ids for the worker, job, and assignment from an accepted offer along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> acceptJobOfferWithResponseAsync(String workerId, String offerId,
@@ -2127,9 +1850,7 @@ public Mono> acceptJobOfferWithResponseAsync(String workerI
 
     /**
      * Accepts an offer to work on a job and returns a 409/Conflict if another agent accepted the job already.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     assignmentId: String (Required)
@@ -2145,8 +1866,7 @@ public Mono> acceptJobOfferWithResponseAsync(String workerI
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return response containing ids for the worker, job, and assignment from an accepted offer along with
-     * {@link Response}.
+     * @return response containing ids for the worker, job, and assignment from an accepted offer along with {@link Response}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Response acceptJobOfferWithResponse(String workerId, String offerId,
@@ -2158,17 +1878,13 @@ public Response acceptJobOfferWithResponse(String workerId, String o
 
     /**
      * Declines an offer to work on a job.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     retryOfferAt: OffsetDateTime (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      * }
@@ -2181,8 +1897,7 @@ public Response acceptJobOfferWithResponse(String workerId, String o
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return response payload from declining a job along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return response payload from declining a job along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> declineJobOfferWithResponseAsync(String workerId, String offerId,
@@ -2200,17 +1915,13 @@ public Mono> declineJobOfferWithResponseAsync(String worker
 
     /**
      * Declines an offer to work on a job.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     retryOfferAt: OffsetDateTime (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      * }
@@ -2241,9 +1952,7 @@ public Response declineJobOfferWithResponse(String workerId, String
 
     /**
      * Retrieves a queue's statistics.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     queueId: String (Required)
@@ -2273,9 +1982,7 @@ public Mono> getQueueStatisticsWithResponseAsync(String que
 
     /**
      * Retrieves a queue's statistics.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     queueId: String (Required)
@@ -2304,34 +2011,15 @@ public Response getQueueStatisticsWithResponse(String queueId, Reque
 
     /**
      * Creates or updates a worker.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2349,26 +2037,26 @@ public Response getQueueStatisticsWithResponse(String queueId, Reque
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -2376,9 +2064,7 @@ public Response getQueueStatisticsWithResponse(String queueId, Reque
      *     maxConcurrentOffers: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2396,26 +2082,26 @@ public Response getQueueStatisticsWithResponse(String queueId, Reque
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -2444,34 +2130,15 @@ public Mono> upsertWorkerWithResponseAsync(String workerId,
 
     /**
      * Creates or updates a worker.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
Header Parameters
NameTypeRequiredDescription
If-MatchStringNoThe request should only proceed if an entity matches this string.
If-Unmodified-SinceOffsetDateTimeNoThe request should only proceed if the entity was not modified after this time.
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2489,26 +2156,26 @@ public Mono> upsertWorkerWithResponseAsync(String workerId,
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -2516,9 +2183,7 @@ public Mono> upsertWorkerWithResponseAsync(String workerId,
      *     maxConcurrentOffers: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2536,26 +2201,26 @@ public Mono> upsertWorkerWithResponseAsync(String workerId,
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -2584,9 +2249,7 @@ public Response upsertWorkerWithResponse(String workerId, BinaryData
 
     /**
      * Retrieves an existing worker by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2604,26 +2267,26 @@ public Response upsertWorkerWithResponse(String workerId, BinaryData
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -2649,9 +2312,7 @@ public Mono> getWorkerWithResponseAsync(String workerId, Re
 
     /**
      * Retrieves an existing worker by Id.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2669,26 +2330,26 @@ public Mono> getWorkerWithResponseAsync(String workerId, Re
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -2750,54 +2411,18 @@ public Response deleteWorkerWithResponse(String workerId, RequestOptions r
 
     /**
      * Retrieves existing workers.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
stateStringNoIf specified, select workers by worker state. Allowed values: "active", "draining", "inactive", "all".
channelIdStringNoIf specified, select workers who have a channel configuration with this channel.
queueIdStringNoIf specified, select workers who are assigned to this queue.
hasCapacityBooleanNoIf set to true, select only workers who have capacity for the channel specified by `channelId` or for any - * channel if `channelId` not specified. If set to false, then will return all workers including workers without any - * capacity for jobs. Defaults to false.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
stateStringNoIf specified, select workers by worker state. Allowed values: "active", "draining", "inactive", "all".
channelIdStringNoIf specified, select workers who have a channel configuration with this channel.
queueIdStringNoIf specified, select workers who are assigned to this queue.
hasCapacityBooleanNoIf set to true, select only workers who have capacity for the channel specified by `channelId` or for any channel if `channelId` not specified. If set to false, then will return all workers including workers without any capacity for jobs. Defaults to false.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2815,26 +2440,26 @@ public Response deleteWorkerWithResponse(String workerId, RequestOptions r
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -2848,8 +2473,7 @@ public Response deleteWorkerWithResponse(String workerId, RequestOptions r
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of RouterWorker items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of RouterWorker items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listWorkersSinglePageAsync(RequestOptions requestOptions) {
@@ -2863,54 +2487,18 @@ private Mono> listWorkersSinglePageAsync(RequestOption
 
     /**
      * Retrieves existing workers.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
stateStringNoIf specified, select workers by worker state. Allowed values: "active", "draining", "inactive", "all".
channelIdStringNoIf specified, select workers who have a channel configuration with this channel.
queueIdStringNoIf specified, select workers who are assigned to this queue.
hasCapacityBooleanNoIf set to true, select only workers who have capacity for the channel specified by `channelId` or for any - * channel if `channelId` not specified. If set to false, then will return all workers including workers without any - * capacity for jobs. Defaults to false.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
stateStringNoIf specified, select workers by worker state. Allowed values: "active", "draining", "inactive", "all".
channelIdStringNoIf specified, select workers who have a channel configuration with this channel.
queueIdStringNoIf specified, select workers who are assigned to this queue.
hasCapacityBooleanNoIf set to true, select only workers who have capacity for the channel specified by `channelId` or for any channel if `channelId` not specified. If set to false, then will return all workers including workers without any capacity for jobs. Defaults to false.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -2928,26 +2516,26 @@ private Mono> listWorkersSinglePageAsync(RequestOption
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -2994,54 +2582,18 @@ public PagedFlux listWorkersAsync(RequestOptions requestOptions) {
 
     /**
      * Retrieves existing workers.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
stateStringNoIf specified, select workers by worker state. Allowed values: "active", "draining", "inactive", "all".
channelIdStringNoIf specified, select workers who have a channel configuration with this channel.
queueIdStringNoIf specified, select workers who are assigned to this queue.
hasCapacityBooleanNoIf set to true, select only workers who have capacity for the channel specified by `channelId` or for any - * channel if `channelId` not specified. If set to false, then will return all workers including workers without any - * capacity for jobs. Defaults to false.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
stateStringNoIf specified, select workers by worker state. Allowed values: "active", "draining", "inactive", "all".
channelIdStringNoIf specified, select workers who have a channel configuration with this channel.
queueIdStringNoIf specified, select workers who are assigned to this queue.
hasCapacityBooleanNoIf set to true, select only workers who have capacity for the channel specified by `channelId` or for any channel if `channelId` not specified. If set to false, then will return all workers including workers without any capacity for jobs. Defaults to false.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -3059,26 +2611,26 @@ public PagedFlux listWorkersAsync(RequestOptions requestOptions) {
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -3105,54 +2657,18 @@ private PagedResponse listWorkersSinglePage(RequestOptions requestOp
 
     /**
      * Retrieves existing workers.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
stateStringNoIf specified, select workers by worker state. Allowed values: "active", "draining", "inactive", "all".
channelIdStringNoIf specified, select workers who have a channel configuration with this channel.
queueIdStringNoIf specified, select workers who are assigned to this queue.
hasCapacityBooleanNoIf set to true, select only workers who have capacity for the channel specified by `channelId` or for any - * channel if `channelId` not specified. If set to false, then will return all workers including workers without any - * capacity for jobs. Defaults to false.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
stateStringNoIf specified, select workers by worker state. Allowed values: "active", "draining", "inactive", "all".
channelIdStringNoIf specified, select workers who have a channel configuration with this channel.
queueIdStringNoIf specified, select workers who are assigned to this queue.
hasCapacityBooleanNoIf set to true, select only workers who have capacity for the channel specified by `channelId` or for any channel if `channelId` not specified. If set to false, then will return all workers including workers without any capacity for jobs. Defaults to false.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -3170,26 +2686,26 @@ private PagedResponse listWorkersSinglePage(RequestOptions requestOp
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -3238,9 +2754,7 @@ public PagedIterable listWorkers(RequestOptions requestOptions) {
      * Retrieves list of jobs based on filter parameters.
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -3255,8 +2769,8 @@ public PagedIterable listWorkers(RequestOptions requestOptions) {
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -3274,7 +2788,7 @@ public PagedIterable listWorkers(RequestOptions requestOptions) {
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -3284,12 +2798,13 @@ public PagedIterable listWorkers(RequestOptions requestOptions) {
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -3302,8 +2817,7 @@ public PagedIterable listWorkers(RequestOptions requestOptions) { * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return paged collection of RouterJob items along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return paged collection of RouterJob items along with {@link PagedResponse} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> listJobsNextSinglePageAsync(String nextLink, @@ -3319,9 +2833,7 @@ private Mono> listJobsNextSinglePageAsync(String nextL * Retrieves list of jobs based on filter parameters. * * Get the next page of items. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -3336,8 +2848,8 @@ private Mono> listJobsNextSinglePageAsync(String nextL
      *     dispositionCode: String (Optional)
      *     requestedWorkerSelectors (Optional): [
      *          (Optional){
-     *             key: String (Required)
-     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Required)
+     *             key: String (Optional, Required on create)
+     *             labelOperator: String(equal/notEqual/lessThan/lessThanOrEqual/greaterThan/greaterThanOrEqual) (Optional, Required on create)
      *             value: Object (Optional)
      *             expiresAfterSeconds: Double (Optional)
      *             expedite: Boolean (Optional)
@@ -3355,7 +2867,7 @@ private Mono> listJobsNextSinglePageAsync(String nextL
      *         String (Required): {
      *             assignmentId: String (Required)
      *             workerId: String (Optional)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *             completedAt: OffsetDateTime (Optional)
      *             closedAt: OffsetDateTime (Optional)
      *         }
@@ -3365,12 +2877,13 @@ private Mono> listJobsNextSinglePageAsync(String nextL
      *     }
      *     notes (Optional): [
      *          (Optional){
-     *             message: String (Required)
+     *             message: String (Optional, Required on create)
      *             addedAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     scheduledAt: OffsetDateTime (Optional)
      *     matchingMode (Optional): {
+     *         kind: String(queueAndMatch/scheduleAndSuspend/suspend) (Optional)
      *     }
      * }
      * }
@@ -3398,9 +2911,7 @@ private PagedResponse listJobsNextSinglePage(String nextLink, Reques * Retrieves existing workers. * * Get the next page of items. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -3418,26 +2929,26 @@ private PagedResponse listJobsNextSinglePage(String nextLink, Reques
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
@@ -3454,8 +2965,7 @@ private PagedResponse listJobsNextSinglePage(String nextLink, Reques
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of RouterWorker items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of RouterWorker items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listWorkersNextSinglePageAsync(String nextLink,
@@ -3472,9 +2982,7 @@ private Mono> listWorkersNextSinglePageAsync(String ne
      * Retrieves existing workers.
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     etag: String (Required)
@@ -3492,26 +3000,26 @@ private Mono> listWorkersNextSinglePageAsync(String ne
      *     }
      *     channels (Optional): [
      *          (Optional){
-     *             channelId: String (Required)
-     *             capacityCostPerJob: int (Required)
+     *             channelId: String (Optional, Required on create)
+     *             capacityCostPerJob: int (Optional, Required on create)
      *             maxNumberOfJobs: Integer (Optional)
      *         }
      *     ]
      *     offers (Optional): [
      *          (Optional){
      *             offerId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
      *             offeredAt: OffsetDateTime (Optional)
      *             expiresAt: OffsetDateTime (Optional)
      *         }
      *     ]
      *     assignedJobs (Optional): [
      *          (Optional){
-     *             assignmentId: String (Required)
-     *             jobId: String (Required)
-     *             capacityCost: int (Required)
-     *             assignedAt: OffsetDateTime (Required)
+     *             assignmentId: String (Optional, Required on create)
+     *             jobId: String (Optional, Required on create)
+     *             capacityCost: int (Optional, Required on create)
+     *             assignedAt: OffsetDateTime (Optional, Required on create)
      *         }
      *     ]
      *     loadRatio: Double (Optional)
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/BestWorkerModeInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/BestWorkerModeInternal.java
index 7c401158a10b..bc6e3d3de463 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/BestWorkerModeInternal.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/BestWorkerModeInternal.java
@@ -3,36 +3,34 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.communication.jobrouter.implementation.models;
 
+import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper;
+import com.azure.communication.jobrouter.models.DistributionModeKind;
 import com.azure.communication.jobrouter.models.ScoringRuleOptions;
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * Jobs are distributed to the worker with the strongest abilities available.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("bestWorker")
 @Fluent
 public final class BestWorkerModeInternal extends DistributionModeInternal {
 
     /*
-     * Define a scoring rule to use, when calculating a score to determine the best worker. If not set, will use a
-     * default scoring formula that uses the number of job labels that the worker labels match, as well as the number
-     * of label selectors the worker labels match and/or exceed using a logistic function
-     * (https://en.wikipedia.org/wiki/Logistic_function).
+     * Define a scoring rule to use, when calculating a score to determine the best worker. If not set, will use a default scoring formula that uses the number of job labels that the worker labels match, as well as the number of label selectors the worker labels match and/or exceed using a logistic function (https://en.wikipedia.org/wiki/Logistic_function).
      */
     @Generated
-    @JsonProperty(value = "scoringRule")
     private RouterRuleInternal scoringRule;
 
     /*
      * Options to configure 'scoringRule'. If not set, default values are used.
      */
     @Generated
-    @JsonProperty(value = "scoringRuleOptions")
     private ScoringRuleOptions scoringRuleOptions;
 
     /**
@@ -40,13 +38,11 @@ public final class BestWorkerModeInternal extends DistributionModeInternal {
      */
     @Generated
     public BestWorkerModeInternal() {
+        setKind(DistributionModeKind.BEST_WORKER);
     }
 
     /**
-     * Get the scoringRule property: Define a scoring rule to use, when calculating a score to determine the best
-     * worker. If not set, will use a default scoring formula that uses the number of job labels that the worker labels
-     * match, as well as the number of label selectors the worker labels match and/or exceed using a logistic function
-     * (https://en.wikipedia.org/wiki/Logistic_function).
+     * Get the scoringRule property: Define a scoring rule to use, when calculating a score to determine the best worker. If not set, will use a default scoring formula that uses the number of job labels that the worker labels match, as well as the number of label selectors the worker labels match and/or exceed using a logistic function (https://en.wikipedia.org/wiki/Logistic_function).
      *
      * @return the scoringRule value.
      */
@@ -56,10 +52,7 @@ public RouterRuleInternal getScoringRule() {
     }
 
     /**
-     * Set the scoringRule property: Define a scoring rule to use, when calculating a score to determine the best
-     * worker. If not set, will use a default scoring formula that uses the number of job labels that the worker labels
-     * match, as well as the number of label selectors the worker labels match and/or exceed using a logistic function
-     * (https://en.wikipedia.org/wiki/Logistic_function).
+     * Set the scoringRule property: Define a scoring rule to use, when calculating a score to determine the best worker. If not set, will use a default scoring formula that uses the number of job labels that the worker labels match, as well as the number of label selectors the worker labels match and/or exceed using a logistic function (https://en.wikipedia.org/wiki/Logistic_function).
      *
      * @param scoringRule the scoringRule value to set.
      * @return the BestWorkerModeInternal object itself.
@@ -67,6 +60,7 @@ public RouterRuleInternal getScoringRule() {
     @Generated
     public BestWorkerModeInternal setScoringRule(RouterRuleInternal scoringRule) {
         this.scoringRule = scoringRule;
+        this.updatedProperties.add("scoringRule");
         return this;
     }
 
@@ -89,6 +83,7 @@ public ScoringRuleOptions getScoringRuleOptions() {
     @Generated
     public BestWorkerModeInternal setScoringRuleOptions(ScoringRuleOptions scoringRuleOptions) {
         this.scoringRuleOptions = scoringRuleOptions;
+        this.updatedProperties.add("scoringRuleOptions");
         return this;
     }
 
@@ -99,6 +94,7 @@ public BestWorkerModeInternal setScoringRuleOptions(ScoringRuleOptions scoringRu
     @Override
     public BestWorkerModeInternal setMinConcurrentOffers(Integer minConcurrentOffers) {
         super.setMinConcurrentOffers(minConcurrentOffers);
+        this.updatedProperties.add("minConcurrentOffers");
         return this;
     }
 
@@ -109,6 +105,7 @@ public BestWorkerModeInternal setMinConcurrentOffers(Integer minConcurrentOffers
     @Override
     public BestWorkerModeInternal setMaxConcurrentOffers(Integer maxConcurrentOffers) {
         super.setMaxConcurrentOffers(maxConcurrentOffers);
+        this.updatedProperties.add("maxConcurrentOffers");
         return this;
     }
 
@@ -119,6 +116,134 @@ public BestWorkerModeInternal setMaxConcurrentOffers(Integer maxConcurrentOffers
     @Override
     public BestWorkerModeInternal setBypassSelectors(Boolean bypassSelectors) {
         super.setBypassSelectors(bypassSelectors);
+        this.updatedProperties.add("bypassSelectors");
         return this;
     }
+
+    @Generated
+    private boolean jsonMergePatch;
+
+    /**
+     * Stores updated model property, the value is property name, not serialized name.
+     */
+    @Generated
+    private final Set updatedProperties = new HashSet<>();
+
+    @Generated
+    void serializeAsJsonMergePatch(boolean jsonMergePatch) {
+        this.jsonMergePatch = jsonMergePatch;
+    }
+
+    static {
+        JsonMergePatchHelper.setBestWorkerModeInternalAccessor((model, jsonMergePatchEnabled) -> {
+            model.serializeAsJsonMergePatch(jsonMergePatchEnabled);
+            return model;
+        });
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        if (jsonMergePatch) {
+            return toJsonMergePatch(jsonWriter);
+        } else {
+            jsonWriter.writeStartObject();
+            jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+            jsonWriter.writeNumberField("minConcurrentOffers", getMinConcurrentOffers());
+            jsonWriter.writeNumberField("maxConcurrentOffers", getMaxConcurrentOffers());
+            jsonWriter.writeBooleanField("bypassSelectors", isBypassSelectors());
+            jsonWriter.writeJsonField("scoringRule", this.scoringRule);
+            jsonWriter.writeJsonField("scoringRuleOptions", this.scoringRuleOptions);
+            return jsonWriter.writeEndObject();
+        }
+    }
+
+    @Generated
+    private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        if (updatedProperties.contains("kind")) {
+            if (getKind() == null) {
+                jsonWriter.writeNullField("kind");
+            } else {
+                jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+            }
+        }
+        if (updatedProperties.contains("minConcurrentOffers")) {
+            if (getMinConcurrentOffers() == null) {
+                jsonWriter.writeNullField("minConcurrentOffers");
+            } else {
+                jsonWriter.writeNumberField("minConcurrentOffers", getMinConcurrentOffers());
+            }
+        }
+        if (updatedProperties.contains("maxConcurrentOffers")) {
+            if (getMaxConcurrentOffers() == null) {
+                jsonWriter.writeNullField("maxConcurrentOffers");
+            } else {
+                jsonWriter.writeNumberField("maxConcurrentOffers", getMaxConcurrentOffers());
+            }
+        }
+        if (updatedProperties.contains("bypassSelectors")) {
+            if (isBypassSelectors() == null) {
+                jsonWriter.writeNullField("bypassSelectors");
+            } else {
+                jsonWriter.writeBooleanField("bypassSelectors", isBypassSelectors());
+            }
+        }
+        if (updatedProperties.contains("scoringRule")) {
+            if (this.scoringRule == null) {
+                jsonWriter.writeNullField("scoringRule");
+            } else {
+                this.scoringRule.serializeAsJsonMergePatch(true);
+                jsonWriter.writeJsonField("scoringRule", this.scoringRule);
+                this.scoringRule.serializeAsJsonMergePatch(false);
+            }
+        }
+        if (updatedProperties.contains("scoringRuleOptions")) {
+            if (this.scoringRuleOptions == null) {
+                jsonWriter.writeNullField("scoringRuleOptions");
+            } else {
+                this.scoringRuleOptions.serializeAsJsonMergePatch(true);
+                jsonWriter.writeJsonField("scoringRuleOptions", this.scoringRuleOptions);
+                this.scoringRuleOptions.serializeAsJsonMergePatch(false);
+            }
+        }
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of BestWorkerModeInternal from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of BestWorkerModeInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the BestWorkerModeInternal.
+     */
+    @Generated
+    public static BestWorkerModeInternal fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            BestWorkerModeInternal deserializedBestWorkerModeInternal = new BestWorkerModeInternal();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    deserializedBestWorkerModeInternal.setKind(DistributionModeKind.fromString(reader.getString()));
+                } else if ("minConcurrentOffers".equals(fieldName)) {
+                    deserializedBestWorkerModeInternal.setMinConcurrentOffers(reader.getNullable(JsonReader::getInt));
+                } else if ("maxConcurrentOffers".equals(fieldName)) {
+                    deserializedBestWorkerModeInternal.setMaxConcurrentOffers(reader.getNullable(JsonReader::getInt));
+                } else if ("bypassSelectors".equals(fieldName)) {
+                    deserializedBestWorkerModeInternal.setBypassSelectors(reader.getNullable(JsonReader::getBoolean));
+                } else if ("scoringRule".equals(fieldName)) {
+                    deserializedBestWorkerModeInternal.scoringRule = RouterRuleInternal.fromJson(reader);
+                } else if ("scoringRuleOptions".equals(fieldName)) {
+                    deserializedBestWorkerModeInternal.scoringRuleOptions = ScoringRuleOptions.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedBestWorkerModeInternal;
+        });
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CancelExceptionActionInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CancelExceptionActionInternal.java
index f5145c61bbe7..7e224465fe46 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CancelExceptionActionInternal.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CancelExceptionActionInternal.java
@@ -3,17 +3,19 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.communication.jobrouter.implementation.models;
 
+import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper;
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * An action that marks a job as cancelled.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("cancel")
 @Fluent
 public final class CancelExceptionActionInternal extends ExceptionActionInternal {
 
@@ -21,14 +23,12 @@ public final class CancelExceptionActionInternal extends ExceptionActionInternal
      * A note that will be appended to a job's notes collection with the current timestamp.
      */
     @Generated
-    @JsonProperty(value = "note")
     private String note;
 
     /*
      * Indicates the outcome of a job, populate this field with your own custom values.
      */
     @Generated
-    @JsonProperty(value = "dispositionCode")
     private String dispositionCode;
 
     /**
@@ -36,6 +36,7 @@ public final class CancelExceptionActionInternal extends ExceptionActionInternal
      */
     @Generated
     public CancelExceptionActionInternal() {
+        setKind(ExceptionActionKind.CANCEL);
     }
 
     /**
@@ -57,12 +58,12 @@ public String getNote() {
     @Generated
     public CancelExceptionActionInternal setNote(String note) {
         this.note = note;
+        this.updatedProperties.add("note");
         return this;
     }
 
     /**
-     * Get the dispositionCode property: Indicates the outcome of a job, populate this field with your own custom
-     * values.
+     * Get the dispositionCode property: Indicates the outcome of a job, populate this field with your own custom values.
      *
      * @return the dispositionCode value.
      */
@@ -72,8 +73,7 @@ public String getDispositionCode() {
     }
 
     /**
-     * Set the dispositionCode property: Indicates the outcome of a job, populate this field with your own custom
-     * values.
+     * Set the dispositionCode property: Indicates the outcome of a job, populate this field with your own custom values.
      *
      * @param dispositionCode the dispositionCode value to set.
      * @return the CancelExceptionActionInternal object itself.
@@ -81,6 +81,7 @@ public String getDispositionCode() {
     @Generated
     public CancelExceptionActionInternal setDispositionCode(String dispositionCode) {
         this.dispositionCode = dispositionCode;
+        this.updatedProperties.add("dispositionCode");
         return this;
     }
 
@@ -91,6 +92,112 @@ public CancelExceptionActionInternal setDispositionCode(String dispositionCode)
     @Override
     public CancelExceptionActionInternal setId(String id) {
         super.setId(id);
+        this.updatedProperties.add("id");
         return this;
     }
+
+    @Generated
+    private boolean jsonMergePatch;
+
+    /**
+     * Stores updated model property, the value is property name, not serialized name.
+     */
+    @Generated
+    private final Set updatedProperties = new HashSet<>();
+
+    @Generated
+    void serializeAsJsonMergePatch(boolean jsonMergePatch) {
+        this.jsonMergePatch = jsonMergePatch;
+    }
+
+    static {
+        JsonMergePatchHelper.setCancelExceptionActionInternalAccessor((model, jsonMergePatchEnabled) -> {
+            model.serializeAsJsonMergePatch(jsonMergePatchEnabled);
+            return model;
+        });
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        if (jsonMergePatch) {
+            return toJsonMergePatch(jsonWriter);
+        } else {
+            jsonWriter.writeStartObject();
+            jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+            jsonWriter.writeStringField("id", getId());
+            jsonWriter.writeStringField("note", this.note);
+            jsonWriter.writeStringField("dispositionCode", this.dispositionCode);
+            return jsonWriter.writeEndObject();
+        }
+    }
+
+    @Generated
+    private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        if (updatedProperties.contains("kind")) {
+            if (getKind() == null) {
+                jsonWriter.writeNullField("kind");
+            } else {
+                jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+            }
+        }
+        if (updatedProperties.contains("id")) {
+            if (getId() == null) {
+                jsonWriter.writeNullField("id");
+            } else {
+                jsonWriter.writeStringField("id", getId());
+            }
+        }
+        if (updatedProperties.contains("note")) {
+            if (this.note == null) {
+                jsonWriter.writeNullField("note");
+            } else {
+                jsonWriter.writeStringField("note", this.note);
+            }
+        }
+        if (updatedProperties.contains("dispositionCode")) {
+            if (this.dispositionCode == null) {
+                jsonWriter.writeNullField("dispositionCode");
+            } else {
+                jsonWriter.writeStringField("dispositionCode", this.dispositionCode);
+            }
+        }
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CancelExceptionActionInternal from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CancelExceptionActionInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the CancelExceptionActionInternal.
+     */
+    @Generated
+    public static CancelExceptionActionInternal fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            CancelExceptionActionInternal deserializedCancelExceptionActionInternal
+                = new CancelExceptionActionInternal();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    deserializedCancelExceptionActionInternal
+                        .setKind(ExceptionActionKind.fromString(reader.getString()));
+                } else if ("id".equals(fieldName)) {
+                    deserializedCancelExceptionActionInternal.setId(reader.getString());
+                } else if ("note".equals(fieldName)) {
+                    deserializedCancelExceptionActionInternal.note = reader.getString();
+                } else if ("dispositionCode".equals(fieldName)) {
+                    deserializedCancelExceptionActionInternal.dispositionCode = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedCancelExceptionActionInternal;
+        });
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CancelJobOptionsInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CancelJobOptionsInternal.java
index 1963aa9cb945..8a6489243154 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CancelJobOptionsInternal.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CancelJobOptionsInternal.java
@@ -5,27 +5,28 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Request payload for cancelling a job.
  */
 @Fluent
-public final class CancelJobOptionsInternal {
+public final class CancelJobOptionsInternal implements JsonSerializable {
 
     /*
      * A note that will be appended to a job's Notes collection with the current timestamp.
      */
     @Generated
-    @JsonProperty(value = "note")
     private String note;
 
     /*
-     * Indicates the outcome of a job, populate this field with your own custom values. If not provided, default value
-     * of "Cancelled" is set.
+     * Indicates the outcome of a job, populate this field with your own custom values. If not provided, default value of "Cancelled" is set.
      */
     @Generated
-    @JsonProperty(value = "dispositionCode")
     private String dispositionCode;
 
     /**
@@ -58,8 +59,7 @@ public CancelJobOptionsInternal setNote(String note) {
     }
 
     /**
-     * Get the dispositionCode property: Indicates the outcome of a job, populate this field with your own custom
-     * values. If not provided, default value of "Cancelled" is set.
+     * Get the dispositionCode property: Indicates the outcome of a job, populate this field with your own custom values. If not provided, default value of "Cancelled" is set.
      *
      * @return the dispositionCode value.
      */
@@ -69,8 +69,7 @@ public String getDispositionCode() {
     }
 
     /**
-     * Set the dispositionCode property: Indicates the outcome of a job, populate this field with your own custom
-     * values. If not provided, default value of "Cancelled" is set.
+     * Set the dispositionCode property: Indicates the outcome of a job, populate this field with your own custom values. If not provided, default value of "Cancelled" is set.
      *
      * @param dispositionCode the dispositionCode value to set.
      * @return the CancelJobOptionsInternal object itself.
@@ -80,4 +79,42 @@ public CancelJobOptionsInternal setDispositionCode(String dispositionCode) {
         this.dispositionCode = dispositionCode;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("note", this.note);
+        jsonWriter.writeStringField("dispositionCode", this.dispositionCode);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CancelJobOptionsInternal from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CancelJobOptionsInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the CancelJobOptionsInternal.
+     */
+    @Generated
+    public static CancelJobOptionsInternal fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            CancelJobOptionsInternal deserializedCancelJobOptionsInternal = new CancelJobOptionsInternal();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("note".equals(fieldName)) {
+                    deserializedCancelJobOptionsInternal.note = reader.getString();
+                } else if ("dispositionCode".equals(fieldName)) {
+                    deserializedCancelJobOptionsInternal.dispositionCode = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedCancelJobOptionsInternal;
+        });
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CancelJobResultInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CancelJobResultInternal.java
index ca981be9fde8..4d5a3016005d 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CancelJobResultInternal.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CancelJobResultInternal.java
@@ -5,12 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Response payload from cancelling a job.
  */
 @Immutable
-public final class CancelJobResultInternal {
+public final class CancelJobResultInternal implements JsonSerializable {
 
     /**
      * Creates an instance of CancelJobResultInternal class.
@@ -18,4 +23,34 @@ public final class CancelJobResultInternal {
     @Generated
     private CancelJobResultInternal() {
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CancelJobResultInternal from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CancelJobResultInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the CancelJobResultInternal.
+     */
+    @Generated
+    public static CancelJobResultInternal fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            CancelJobResultInternal deserializedCancelJobResultInternal = new CancelJobResultInternal();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                reader.skipChildren();
+            }
+            return deserializedCancelJobResultInternal;
+        });
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ClassificationPolicyInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ClassificationPolicyInternal.java
index 28eca8431881..ddc6eaf70aad 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ClassificationPolicyInternal.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ClassificationPolicyInternal.java
@@ -3,64 +3,64 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.communication.jobrouter.implementation.models;
 
+import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper;
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * A container for the rules that govern how jobs are classified.
  */
 @Fluent
-public final class ClassificationPolicyInternal {
+public final class ClassificationPolicyInternal implements JsonSerializable {
 
     /*
      * The entity tag for this resource.
      */
     @Generated
-    @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
     private String etag;
 
     /*
      * Id of a classification policy.
      */
     @Generated
-    @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY)
     private String id;
 
     /*
      * Friendly name of this policy.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * Id of a fallback queue to select if queue selector attachments doesn't find a match.
      */
     @Generated
-    @JsonProperty(value = "fallbackQueueId")
     private String fallbackQueueId;
 
     /*
      * Queue selector attachments used to resolve a queue for a job.
      */
     @Generated
-    @JsonProperty(value = "queueSelectorAttachments")
     private List queueSelectorAttachments;
 
     /*
      * A rule to determine a priority score for a job.
      */
     @Generated
-    @JsonProperty(value = "prioritizationRule")
     private RouterRuleInternal prioritizationRule;
 
     /*
      * Worker selector attachments used to attach worker selectors to a job.
      */
     @Generated
-    @JsonProperty(value = "workerSelectorAttachments")
     private List workerSelectorAttachments;
 
     /**
@@ -131,12 +131,12 @@ public String getName() {
     @Generated
     public ClassificationPolicyInternal setName(String name) {
         this.name = name;
+        this.updatedProperties.add("name");
         return this;
     }
 
     /**
-     * Get the fallbackQueueId property: Id of a fallback queue to select if queue selector attachments doesn't find a
-     * match.
+     * Get the fallbackQueueId property: Id of a fallback queue to select if queue selector attachments doesn't find a match.
      *
      * @return the fallbackQueueId value.
      */
@@ -146,8 +146,7 @@ public String getFallbackQueueId() {
     }
 
     /**
-     * Set the fallbackQueueId property: Id of a fallback queue to select if queue selector attachments doesn't find a
-     * match.
+     * Set the fallbackQueueId property: Id of a fallback queue to select if queue selector attachments doesn't find a match.
      *
      * @param fallbackQueueId the fallbackQueueId value to set.
      * @return the ClassificationPolicyInternal object itself.
@@ -155,6 +154,7 @@ public String getFallbackQueueId() {
     @Generated
     public ClassificationPolicyInternal setFallbackQueueId(String fallbackQueueId) {
         this.fallbackQueueId = fallbackQueueId;
+        this.updatedProperties.add("fallbackQueueId");
         return this;
     }
 
@@ -178,6 +178,7 @@ public List getQueueSelectorAttachments() {
     public ClassificationPolicyInternal
         setQueueSelectorAttachments(List queueSelectorAttachments) {
         this.queueSelectorAttachments = queueSelectorAttachments;
+        this.updatedProperties.add("queueSelectorAttachments");
         return this;
     }
 
@@ -200,12 +201,12 @@ public RouterRuleInternal getPrioritizationRule() {
     @Generated
     public ClassificationPolicyInternal setPrioritizationRule(RouterRuleInternal prioritizationRule) {
         this.prioritizationRule = prioritizationRule;
+        this.updatedProperties.add("prioritizationRule");
         return this;
     }
 
     /**
-     * Get the workerSelectorAttachments property: Worker selector attachments used to attach worker selectors to a
-     * job.
+     * Get the workerSelectorAttachments property: Worker selector attachments used to attach worker selectors to a job.
      *
      * @return the workerSelectorAttachments value.
      */
@@ -215,8 +216,7 @@ public List getWorkerSelectorAttachments() {
     }
 
     /**
-     * Set the workerSelectorAttachments property: Worker selector attachments used to attach worker selectors to a
-     * job.
+     * Set the workerSelectorAttachments property: Worker selector attachments used to attach worker selectors to a job.
      *
      * @param workerSelectorAttachments the workerSelectorAttachments value to set.
      * @return the ClassificationPolicyInternal object itself.
@@ -225,6 +225,147 @@ public List getWorkerSelectorAttachments() {
     public ClassificationPolicyInternal
         setWorkerSelectorAttachments(List workerSelectorAttachments) {
         this.workerSelectorAttachments = workerSelectorAttachments;
+        this.updatedProperties.add("workerSelectorAttachments");
         return this;
     }
+
+    @Generated
+    private boolean jsonMergePatch;
+
+    /**
+     * Stores updated model property, the value is property name, not serialized name.
+     */
+    @Generated
+    private final Set updatedProperties = new HashSet<>();
+
+    @Generated
+    void serializeAsJsonMergePatch(boolean jsonMergePatch) {
+        this.jsonMergePatch = jsonMergePatch;
+    }
+
+    static {
+        JsonMergePatchHelper.setClassificationPolicyInternalAccessor((model, jsonMergePatchEnabled) -> {
+            model.serializeAsJsonMergePatch(jsonMergePatchEnabled);
+            return model;
+        });
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        if (jsonMergePatch) {
+            return toJsonMergePatch(jsonWriter);
+        } else {
+            jsonWriter.writeStartObject();
+            jsonWriter.writeStringField("name", this.name);
+            jsonWriter.writeStringField("fallbackQueueId", this.fallbackQueueId);
+            jsonWriter.writeArrayField("queueSelectorAttachments", this.queueSelectorAttachments,
+                (writer, element) -> writer.writeJson(element));
+            jsonWriter.writeJsonField("prioritizationRule", this.prioritizationRule);
+            jsonWriter.writeArrayField("workerSelectorAttachments", this.workerSelectorAttachments,
+                (writer, element) -> writer.writeJson(element));
+            return jsonWriter.writeEndObject();
+        }
+    }
+
+    @Generated
+    private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        if (updatedProperties.contains("name")) {
+            if (this.name == null) {
+                jsonWriter.writeNullField("name");
+            } else {
+                jsonWriter.writeStringField("name", this.name);
+            }
+        }
+        if (updatedProperties.contains("fallbackQueueId")) {
+            if (this.fallbackQueueId == null) {
+                jsonWriter.writeNullField("fallbackQueueId");
+            } else {
+                jsonWriter.writeStringField("fallbackQueueId", this.fallbackQueueId);
+            }
+        }
+        if (updatedProperties.contains("queueSelectorAttachments")) {
+            if (this.queueSelectorAttachments == null) {
+                jsonWriter.writeNullField("queueSelectorAttachments");
+            } else {
+                jsonWriter.writeArrayField("queueSelectorAttachments", this.queueSelectorAttachments,
+                    (writer, element) -> writer.writeJson(element));
+            }
+        }
+        if (updatedProperties.contains("prioritizationRule")) {
+            if (this.prioritizationRule == null) {
+                jsonWriter.writeNullField("prioritizationRule");
+            } else {
+                this.prioritizationRule.serializeAsJsonMergePatch(true);
+                jsonWriter.writeJsonField("prioritizationRule", this.prioritizationRule);
+                this.prioritizationRule.serializeAsJsonMergePatch(false);
+            }
+        }
+        if (updatedProperties.contains("workerSelectorAttachments")) {
+            if (this.workerSelectorAttachments == null) {
+                jsonWriter.writeNullField("workerSelectorAttachments");
+            } else {
+                jsonWriter.writeArrayField("workerSelectorAttachments", this.workerSelectorAttachments,
+                    (writer, element) -> writer.writeJson(element));
+            }
+        }
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ClassificationPolicyInternal from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ClassificationPolicyInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ClassificationPolicyInternal.
+     */
+    @Generated
+    public static ClassificationPolicyInternal fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String etag = null;
+            String id = null;
+            String name = null;
+            String fallbackQueueId = null;
+            List queueSelectorAttachments = null;
+            RouterRuleInternal prioritizationRule = null;
+            List workerSelectorAttachments = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("etag".equals(fieldName)) {
+                    etag = reader.getString();
+                } else if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("fallbackQueueId".equals(fieldName)) {
+                    fallbackQueueId = reader.getString();
+                } else if ("queueSelectorAttachments".equals(fieldName)) {
+                    queueSelectorAttachments
+                        = reader.readArray(reader1 -> QueueSelectorAttachmentInternal.fromJson(reader1));
+                } else if ("prioritizationRule".equals(fieldName)) {
+                    prioritizationRule = RouterRuleInternal.fromJson(reader);
+                } else if ("workerSelectorAttachments".equals(fieldName)) {
+                    workerSelectorAttachments
+                        = reader.readArray(reader1 -> WorkerSelectorAttachmentInternal.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            ClassificationPolicyInternal deserializedClassificationPolicyInternal = new ClassificationPolicyInternal();
+            deserializedClassificationPolicyInternal.etag = etag;
+            deserializedClassificationPolicyInternal.id = id;
+            deserializedClassificationPolicyInternal.name = name;
+            deserializedClassificationPolicyInternal.fallbackQueueId = fallbackQueueId;
+            deserializedClassificationPolicyInternal.queueSelectorAttachments = queueSelectorAttachments;
+            deserializedClassificationPolicyInternal.prioritizationRule = prioritizationRule;
+            deserializedClassificationPolicyInternal.workerSelectorAttachments = workerSelectorAttachments;
+            return deserializedClassificationPolicyInternal;
+        });
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CloseJobOptionsInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CloseJobOptionsInternal.java
index 855d481e6a97..8598c4ca6c36 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CloseJobOptionsInternal.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CloseJobOptionsInternal.java
@@ -5,35 +5,36 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * Request payload for closing jobs.
  */
 @Fluent
-public final class CloseJobOptionsInternal {
+public final class CloseJobOptionsInternal implements JsonSerializable {
 
     /*
      * Indicates the outcome of a job, populate this field with your own custom values.
      */
     @Generated
-    @JsonProperty(value = "dispositionCode")
     private String dispositionCode;
 
     /*
-     * If not provided, worker capacity is released immediately along with a JobClosedEvent notification. If provided,
-     * worker capacity is released along with a JobClosedEvent notification at a future time in UTC.
+     * If not provided, worker capacity is released immediately along with a JobClosedEvent notification. If provided, worker capacity is released along with a JobClosedEvent notification at a future time in UTC.
      */
     @Generated
-    @JsonProperty(value = "closeAt")
     private OffsetDateTime closeAt;
 
     /*
      * A note that will be appended to a job's Notes collection with the current timestamp.
      */
     @Generated
-    @JsonProperty(value = "note")
     private String note;
 
     /**
@@ -44,8 +45,7 @@ public CloseJobOptionsInternal() {
     }
 
     /**
-     * Get the dispositionCode property: Indicates the outcome of a job, populate this field with your own custom
-     * values.
+     * Get the dispositionCode property: Indicates the outcome of a job, populate this field with your own custom values.
      *
      * @return the dispositionCode value.
      */
@@ -55,8 +55,7 @@ public String getDispositionCode() {
     }
 
     /**
-     * Set the dispositionCode property: Indicates the outcome of a job, populate this field with your own custom
-     * values.
+     * Set the dispositionCode property: Indicates the outcome of a job, populate this field with your own custom values.
      *
      * @param dispositionCode the dispositionCode value to set.
      * @return the CloseJobOptionsInternal object itself.
@@ -68,9 +67,7 @@ public CloseJobOptionsInternal setDispositionCode(String dispositionCode) {
     }
 
     /**
-     * Get the closeAt property: If not provided, worker capacity is released immediately along with a JobClosedEvent
-     * notification. If provided, worker capacity is released along with a JobClosedEvent notification at a future time
-     * in UTC.
+     * Get the closeAt property: If not provided, worker capacity is released immediately along with a JobClosedEvent notification. If provided, worker capacity is released along with a JobClosedEvent notification at a future time in UTC.
      *
      * @return the closeAt value.
      */
@@ -80,9 +77,7 @@ public OffsetDateTime getCloseAt() {
     }
 
     /**
-     * Set the closeAt property: If not provided, worker capacity is released immediately along with a JobClosedEvent
-     * notification. If provided, worker capacity is released along with a JobClosedEvent notification at a future time
-     * in UTC.
+     * Set the closeAt property: If not provided, worker capacity is released immediately along with a JobClosedEvent notification. If provided, worker capacity is released along with a JobClosedEvent notification at a future time in UTC.
      *
      * @param closeAt the closeAt value to set.
      * @return the CloseJobOptionsInternal object itself.
@@ -114,4 +109,47 @@ public CloseJobOptionsInternal setNote(String note) {
         this.note = note;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("dispositionCode", this.dispositionCode);
+        jsonWriter.writeStringField("closeAt",
+            this.closeAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.closeAt));
+        jsonWriter.writeStringField("note", this.note);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CloseJobOptionsInternal from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CloseJobOptionsInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the CloseJobOptionsInternal.
+     */
+    @Generated
+    public static CloseJobOptionsInternal fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            CloseJobOptionsInternal deserializedCloseJobOptionsInternal = new CloseJobOptionsInternal();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("dispositionCode".equals(fieldName)) {
+                    deserializedCloseJobOptionsInternal.dispositionCode = reader.getString();
+                } else if ("closeAt".equals(fieldName)) {
+                    deserializedCloseJobOptionsInternal.closeAt
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("note".equals(fieldName)) {
+                    deserializedCloseJobOptionsInternal.note = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedCloseJobOptionsInternal;
+        });
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CloseJobResultInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CloseJobResultInternal.java
index a98faa6c9ac1..18c4853a699f 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CloseJobResultInternal.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CloseJobResultInternal.java
@@ -5,12 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Response payload from closing a job.
  */
 @Immutable
-public final class CloseJobResultInternal {
+public final class CloseJobResultInternal implements JsonSerializable {
 
     /**
      * Creates an instance of CloseJobResultInternal class.
@@ -18,4 +23,34 @@ public final class CloseJobResultInternal {
     @Generated
     private CloseJobResultInternal() {
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CloseJobResultInternal from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CloseJobResultInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the CloseJobResultInternal.
+     */
+    @Generated
+    public static CloseJobResultInternal fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            CloseJobResultInternal deserializedCloseJobResultInternal = new CloseJobResultInternal();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                reader.skipChildren();
+            }
+            return deserializedCloseJobResultInternal;
+        });
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CompleteJobOptionsInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CompleteJobOptionsInternal.java
index 7da8f735bf20..4522988bbe37 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CompleteJobOptionsInternal.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CompleteJobOptionsInternal.java
@@ -5,19 +5,22 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Request payload for completing jobs.
  */
 @Fluent
-public final class CompleteJobOptionsInternal {
+public final class CompleteJobOptionsInternal implements JsonSerializable {
 
     /*
      * A note that will be appended to a job's Notes collection with the current timestamp.
      */
     @Generated
-    @JsonProperty(value = "note")
     private String note;
 
     /**
@@ -48,4 +51,39 @@ public CompleteJobOptionsInternal setNote(String note) {
         this.note = note;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("note", this.note);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CompleteJobOptionsInternal from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CompleteJobOptionsInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the CompleteJobOptionsInternal.
+     */
+    @Generated
+    public static CompleteJobOptionsInternal fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            CompleteJobOptionsInternal deserializedCompleteJobOptionsInternal = new CompleteJobOptionsInternal();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("note".equals(fieldName)) {
+                    deserializedCompleteJobOptionsInternal.note = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedCompleteJobOptionsInternal;
+        });
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CompleteJobResultInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CompleteJobResultInternal.java
index 17b2f8866e39..5a9563be84ae 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CompleteJobResultInternal.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/CompleteJobResultInternal.java
@@ -5,12 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Response payload from completing a job.
  */
 @Immutable
-public final class CompleteJobResultInternal {
+public final class CompleteJobResultInternal implements JsonSerializable {
 
     /**
      * Creates an instance of CompleteJobResultInternal class.
@@ -18,4 +23,34 @@ public final class CompleteJobResultInternal {
     @Generated
     private CompleteJobResultInternal() {
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CompleteJobResultInternal from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CompleteJobResultInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the CompleteJobResultInternal.
+     */
+    @Generated
+    public static CompleteJobResultInternal fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            CompleteJobResultInternal deserializedCompleteJobResultInternal = new CompleteJobResultInternal();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                reader.skipChildren();
+            }
+            return deserializedCompleteJobResultInternal;
+        });
+    }
 }
diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ConditionalQueueSelectorAttachmentInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ConditionalQueueSelectorAttachmentInternal.java
index cfad9de0b64b..99d2a72468ce 100644
--- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ConditionalQueueSelectorAttachmentInternal.java
+++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ConditionalQueueSelectorAttachmentInternal.java
@@ -3,67 +3,192 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.communication.jobrouter.implementation.models;
 
+import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper;
+import com.azure.communication.jobrouter.models.QueueSelectorAttachmentKind;
+import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * Describes a set of queue selectors that will be attached if the given condition resolves to true.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("conditional")
-@Immutable
+@Fluent
 public final class ConditionalQueueSelectorAttachmentInternal extends QueueSelectorAttachmentInternal {
 
     /*
      * The condition that must be true for the queue selectors to be attached.
      */
     @Generated
-    @JsonProperty(value = "condition")
     private RouterRuleInternal condition;
 
     /*
      * The queue selectors to attach.
      */
     @Generated
-    @JsonProperty(value = "queueSelectors")
     private List queueSelectors;
 
+    /**
+     * Get the condition property: The condition that must be true for the queue selectors to be attached.
+     *
+     * @return the condition value.
+     */
+    @Generated
+    public RouterRuleInternal getCondition() {
+        return this.condition;
+    }
+
+    /**
+     * Get the queueSelectors property: The queue selectors to attach.
+     *
+     * @return the queueSelectors value.
+     */
+    @Generated
+    public List getQueueSelectors() {
+        return this.queueSelectors;
+    }
+
+    @Generated
+    private boolean jsonMergePatch;
+
+    /**
+     * Stores updated model property, the value is property name, not serialized name.
+     */
+    @Generated
+    private final Set updatedProperties = new HashSet<>();
+
+    @Generated
+    void serializeAsJsonMergePatch(boolean jsonMergePatch) {
+        this.jsonMergePatch = jsonMergePatch;
+    }
+
+    static {
+        JsonMergePatchHelper.setConditionalQueueSelectorAttachmentInternalAccessor((model, jsonMergePatchEnabled) -> {
+            model.serializeAsJsonMergePatch(jsonMergePatchEnabled);
+            return model;
+        });
+    }
+
     /**
      * Creates an instance of ConditionalQueueSelectorAttachmentInternal class.
+     */
+    @Generated
+    public ConditionalQueueSelectorAttachmentInternal() {
+        setKind(QueueSelectorAttachmentKind.CONDITIONAL);
+    }
+
+    /**
+     * Set the condition property: The condition that must be true for the queue selectors to be attached.
+     * 

Required when create the resource.

* * @param condition the condition value to set. - * @param queueSelectors the queueSelectors value to set. + * @return the ConditionalQueueSelectorAttachmentInternal object itself. */ @Generated - @JsonCreator - public ConditionalQueueSelectorAttachmentInternal(@JsonProperty(value = "condition") RouterRuleInternal condition, - @JsonProperty(value = "queueSelectors") List queueSelectors) { + public ConditionalQueueSelectorAttachmentInternal setCondition(RouterRuleInternal condition) { this.condition = condition; - this.queueSelectors = queueSelectors; + this.updatedProperties.add("condition"); + return this; } /** - * Get the condition property: The condition that must be true for the queue selectors to be attached. + * Set the queueSelectors property: The queue selectors to attach. + *

Required when create the resource.

* - * @return the condition value. + * @param queueSelectors the queueSelectors value to set. + * @return the ConditionalQueueSelectorAttachmentInternal object itself. */ @Generated - public RouterRuleInternal getCondition() { - return this.condition; + public ConditionalQueueSelectorAttachmentInternal + setQueueSelectors(List queueSelectors) { + this.queueSelectors = queueSelectors; + this.updatedProperties.add("queueSelectors"); + return this; } /** - * Get the queueSelectors property: The queue selectors to attach. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeJsonField("condition", this.condition); + jsonWriter.writeArrayField("queueSelectors", this.queueSelectors, + (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("condition")) { + if (this.condition == null) { + jsonWriter.writeNullField("condition"); + } else { + this.condition.serializeAsJsonMergePatch(true); + jsonWriter.writeJsonField("condition", this.condition); + this.condition.serializeAsJsonMergePatch(false); + } + } + if (updatedProperties.contains("queueSelectors")) { + if (this.queueSelectors == null) { + jsonWriter.writeNullField("queueSelectors"); + } else { + jsonWriter.writeArrayField("queueSelectors", this.queueSelectors, + (writer, element) -> writer.writeJson(element)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ConditionalQueueSelectorAttachmentInternal from the JsonReader. * - * @return the queueSelectors value. + * @param jsonReader The JsonReader being read. + * @return An instance of ConditionalQueueSelectorAttachmentInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ConditionalQueueSelectorAttachmentInternal. */ @Generated - public List getQueueSelectors() { - return this.queueSelectors; + public static ConditionalQueueSelectorAttachmentInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ConditionalQueueSelectorAttachmentInternal deserializedConditionalQueueSelectorAttachmentInternal + = new ConditionalQueueSelectorAttachmentInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedConditionalQueueSelectorAttachmentInternal + .setKind(QueueSelectorAttachmentKind.fromString(reader.getString())); + } else if ("condition".equals(fieldName)) { + deserializedConditionalQueueSelectorAttachmentInternal.condition + = RouterRuleInternal.fromJson(reader); + } else if ("queueSelectors".equals(fieldName)) { + List queueSelectors + = reader.readArray(reader1 -> RouterQueueSelectorInternal.fromJson(reader1)); + deserializedConditionalQueueSelectorAttachmentInternal.queueSelectors = queueSelectors; + } else { + reader.skipChildren(); + } + } + return deserializedConditionalQueueSelectorAttachmentInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ConditionalWorkerSelectorAttachmentInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ConditionalWorkerSelectorAttachmentInternal.java index 82963805f34e..069f89cdc809 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ConditionalWorkerSelectorAttachmentInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ConditionalWorkerSelectorAttachmentInternal.java @@ -3,67 +3,192 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.WorkerSelectorAttachmentKind; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Describes a set of worker selectors that will be attached if the given condition resolves to true. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("conditional") -@Immutable +@Fluent public final class ConditionalWorkerSelectorAttachmentInternal extends WorkerSelectorAttachmentInternal { /* * The condition that must be true for the worker selectors to be attached. */ @Generated - @JsonProperty(value = "condition") private RouterRuleInternal condition; /* * The worker selectors to attach. */ @Generated - @JsonProperty(value = "workerSelectors") private List workerSelectors; + /** + * Get the condition property: The condition that must be true for the worker selectors to be attached. + * + * @return the condition value. + */ + @Generated + public RouterRuleInternal getCondition() { + return this.condition; + } + + /** + * Get the workerSelectors property: The worker selectors to attach. + * + * @return the workerSelectors value. + */ + @Generated + public List getWorkerSelectors() { + return this.workerSelectors; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setConditionalWorkerSelectorAttachmentInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of ConditionalWorkerSelectorAttachmentInternal class. + */ + @Generated + public ConditionalWorkerSelectorAttachmentInternal() { + setKind(WorkerSelectorAttachmentKind.CONDITIONAL); + } + + /** + * Set the condition property: The condition that must be true for the worker selectors to be attached. + *

Required when create the resource.

* * @param condition the condition value to set. - * @param workerSelectors the workerSelectors value to set. + * @return the ConditionalWorkerSelectorAttachmentInternal object itself. */ @Generated - @JsonCreator - public ConditionalWorkerSelectorAttachmentInternal(@JsonProperty(value = "condition") RouterRuleInternal condition, - @JsonProperty(value = "workerSelectors") List workerSelectors) { + public ConditionalWorkerSelectorAttachmentInternal setCondition(RouterRuleInternal condition) { this.condition = condition; - this.workerSelectors = workerSelectors; + this.updatedProperties.add("condition"); + return this; } /** - * Get the condition property: The condition that must be true for the worker selectors to be attached. + * Set the workerSelectors property: The worker selectors to attach. + *

Required when create the resource.

* - * @return the condition value. + * @param workerSelectors the workerSelectors value to set. + * @return the ConditionalWorkerSelectorAttachmentInternal object itself. */ @Generated - public RouterRuleInternal getCondition() { - return this.condition; + public ConditionalWorkerSelectorAttachmentInternal + setWorkerSelectors(List workerSelectors) { + this.workerSelectors = workerSelectors; + this.updatedProperties.add("workerSelectors"); + return this; } /** - * Get the workerSelectors property: The worker selectors to attach. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeJsonField("condition", this.condition); + jsonWriter.writeArrayField("workerSelectors", this.workerSelectors, + (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("condition")) { + if (this.condition == null) { + jsonWriter.writeNullField("condition"); + } else { + this.condition.serializeAsJsonMergePatch(true); + jsonWriter.writeJsonField("condition", this.condition); + this.condition.serializeAsJsonMergePatch(false); + } + } + if (updatedProperties.contains("workerSelectors")) { + if (this.workerSelectors == null) { + jsonWriter.writeNullField("workerSelectors"); + } else { + jsonWriter.writeArrayField("workerSelectors", this.workerSelectors, + (writer, element) -> writer.writeJson(element)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ConditionalWorkerSelectorAttachmentInternal from the JsonReader. * - * @return the workerSelectors value. + * @param jsonReader The JsonReader being read. + * @return An instance of ConditionalWorkerSelectorAttachmentInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ConditionalWorkerSelectorAttachmentInternal. */ @Generated - public List getWorkerSelectors() { - return this.workerSelectors; + public static ConditionalWorkerSelectorAttachmentInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ConditionalWorkerSelectorAttachmentInternal deserializedConditionalWorkerSelectorAttachmentInternal + = new ConditionalWorkerSelectorAttachmentInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedConditionalWorkerSelectorAttachmentInternal + .setKind(WorkerSelectorAttachmentKind.fromString(reader.getString())); + } else if ("condition".equals(fieldName)) { + deserializedConditionalWorkerSelectorAttachmentInternal.condition + = RouterRuleInternal.fromJson(reader); + } else if ("workerSelectors".equals(fieldName)) { + List workerSelectors + = reader.readArray(reader1 -> RouterWorkerSelectorInternal.fromJson(reader1)); + deserializedConditionalWorkerSelectorAttachmentInternal.workerSelectors = workerSelectors; + } else { + reader.skipChildren(); + } + } + return deserializedConditionalWorkerSelectorAttachmentInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DeclineJobOfferOptionsInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DeclineJobOfferOptionsInternal.java index f8cc38a94d0e..8e8902bfe182 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DeclineJobOfferOptionsInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DeclineJobOfferOptionsInternal.java @@ -5,23 +5,24 @@ import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; /** * Request payload for declining offers. */ @Fluent -public final class DeclineJobOfferOptionsInternal { +public final class DeclineJobOfferOptionsInternal implements JsonSerializable { /* - * If the RetryOfferAt is not provided, then this job will not be offered again to the worker who declined this job - * unless the worker is de-registered and re-registered. If a RetryOfferAt time is provided, then the job will be - * re-matched to eligible workers at the retry time in UTC. The worker that declined the job will also be eligible - * for the job at that time. + * If the RetryOfferAt is not provided, then this job will not be offered again to the worker who declined this job unless the worker is de-registered and re-registered. If a RetryOfferAt time is provided, then the job will be re-matched to eligible workers at the retry time in UTC. The worker that declined the job will also be eligible for the job at that time. */ @Generated - @JsonProperty(value = "retryOfferAt") private OffsetDateTime retryOfferAt; /** @@ -32,10 +33,7 @@ public DeclineJobOfferOptionsInternal() { } /** - * Get the retryOfferAt property: If the RetryOfferAt is not provided, then this job will not be offered again to - * the worker who declined this job unless the worker is de-registered and re-registered. If a RetryOfferAt time - * is provided, then the job will be re-matched to eligible workers at the retry time in UTC. The worker that - * declined the job will also be eligible for the job at that time. + * Get the retryOfferAt property: If the RetryOfferAt is not provided, then this job will not be offered again to the worker who declined this job unless the worker is de-registered and re-registered. If a RetryOfferAt time is provided, then the job will be re-matched to eligible workers at the retry time in UTC. The worker that declined the job will also be eligible for the job at that time. * * @return the retryOfferAt value. */ @@ -45,10 +43,7 @@ public OffsetDateTime getRetryOfferAt() { } /** - * Set the retryOfferAt property: If the RetryOfferAt is not provided, then this job will not be offered again to - * the worker who declined this job unless the worker is de-registered and re-registered. If a RetryOfferAt time - * is provided, then the job will be re-matched to eligible workers at the retry time in UTC. The worker that - * declined the job will also be eligible for the job at that time. + * Set the retryOfferAt property: If the RetryOfferAt is not provided, then this job will not be offered again to the worker who declined this job unless the worker is de-registered and re-registered. If a RetryOfferAt time is provided, then the job will be re-matched to eligible workers at the retry time in UTC. The worker that declined the job will also be eligible for the job at that time. * * @param retryOfferAt the retryOfferAt value to set. * @return the DeclineJobOfferOptionsInternal object itself. @@ -58,4 +53,42 @@ public DeclineJobOfferOptionsInternal setRetryOfferAt(OffsetDateTime retryOfferA this.retryOfferAt = retryOfferAt; return this; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("retryOfferAt", + this.retryOfferAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.retryOfferAt)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of DeclineJobOfferOptionsInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of DeclineJobOfferOptionsInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the DeclineJobOfferOptionsInternal. + */ + @Generated + public static DeclineJobOfferOptionsInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + DeclineJobOfferOptionsInternal deserializedDeclineJobOfferOptionsInternal + = new DeclineJobOfferOptionsInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("retryOfferAt".equals(fieldName)) { + deserializedDeclineJobOfferOptionsInternal.retryOfferAt + = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())); + } else { + reader.skipChildren(); + } + } + return deserializedDeclineJobOfferOptionsInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DeclineJobOfferResultInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DeclineJobOfferResultInternal.java index df40914e0b6e..96455c0572ae 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DeclineJobOfferResultInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DeclineJobOfferResultInternal.java @@ -5,12 +5,17 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * Response payload from declining a job. */ @Immutable -public final class DeclineJobOfferResultInternal { +public final class DeclineJobOfferResultInternal implements JsonSerializable { /** * Creates an instance of DeclineJobOfferResultInternal class. @@ -18,4 +23,35 @@ public final class DeclineJobOfferResultInternal { @Generated private DeclineJobOfferResultInternal() { } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of DeclineJobOfferResultInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of DeclineJobOfferResultInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the DeclineJobOfferResultInternal. + */ + @Generated + public static DeclineJobOfferResultInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + DeclineJobOfferResultInternal deserializedDeclineJobOfferResultInternal + = new DeclineJobOfferResultInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + reader.skipChildren(); + } + return deserializedDeclineJobOfferResultInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DirectMapRouterRuleInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DirectMapRouterRuleInternal.java index 50cae711144b..ed2cd68bdf5b 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DirectMapRouterRuleInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DirectMapRouterRuleInternal.java @@ -3,16 +3,20 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.RouterRuleKind; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * A rule that return the same labels as the input labels. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("directMap") @Immutable public final class DirectMapRouterRuleInternal extends RouterRuleInternal { @@ -21,5 +25,79 @@ public final class DirectMapRouterRuleInternal extends RouterRuleInternal { */ @Generated public DirectMapRouterRuleInternal() { + setKind(RouterRuleKind.DIRECT_MAP); + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setDirectMapRouterRuleInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of DirectMapRouterRuleInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of DirectMapRouterRuleInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the DirectMapRouterRuleInternal. + */ + @Generated + public static DirectMapRouterRuleInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + DirectMapRouterRuleInternal deserializedDirectMapRouterRuleInternal = new DirectMapRouterRuleInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedDirectMapRouterRuleInternal.setKind(RouterRuleKind.fromString(reader.getString())); + } else { + reader.skipChildren(); + } + } + return deserializedDirectMapRouterRuleInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DistributionModeInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DistributionModeInternal.java index d1202eaa5f32..322ed89b2fa2 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DistributionModeInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DistributionModeInternal.java @@ -3,50 +3,40 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.DistributionModeKind; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Abstract base class for defining a distribution mode. */ -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - include = JsonTypeInfo.As.PROPERTY, - property = "kind", - defaultImpl = DistributionModeInternal.class) -@JsonTypeName("DistributionModeInternal") -@JsonSubTypes({ - @JsonSubTypes.Type(name = "bestWorker", value = BestWorkerModeInternal.class), - @JsonSubTypes.Type(name = "longestIdle", value = LongestIdleModeInternal.class), - @JsonSubTypes.Type(name = "roundRobin", value = RoundRobinModeInternal.class) }) @Fluent -public class DistributionModeInternal { +public class DistributionModeInternal implements JsonSerializable { /* * Governs the minimum desired number of active concurrent offers a job can have. */ @Generated - @JsonProperty(value = "minConcurrentOffers") private Integer minConcurrentOffers; /* * Governs the maximum number of active concurrent offers a job can have. */ @Generated - @JsonProperty(value = "maxConcurrentOffers") private Integer maxConcurrentOffers; /* - * If set to true, then router will match workers to jobs even if they don't match label selectors. Warning: You - * may get workers that are not qualified for a job they are matched with if you set this variable to true. This - * flag is intended more for temporary usage. By default, set to false. + * If set to true, then router will match workers to jobs even if they don't match label selectors. Warning: You may get workers that are not qualified for a job they are matched with if you set this variable to true. This flag is intended more for temporary usage. By default, set to false. */ @Generated - @JsonProperty(value = "bypassSelectors") private Boolean bypassSelectors; /** @@ -54,11 +44,11 @@ public class DistributionModeInternal { */ @Generated public DistributionModeInternal() { + this.kind = DistributionModeKind.fromString("DistributionModeInternal"); } /** - * Get the minConcurrentOffers property: Governs the minimum desired number of active concurrent offers a job can - * have. + * Get the minConcurrentOffers property: Governs the minimum desired number of active concurrent offers a job can have. * * @return the minConcurrentOffers value. */ @@ -68,8 +58,7 @@ public Integer getMinConcurrentOffers() { } /** - * Set the minConcurrentOffers property: Governs the minimum desired number of active concurrent offers a job can - * have. + * Set the minConcurrentOffers property: Governs the minimum desired number of active concurrent offers a job can have. * * @param minConcurrentOffers the minConcurrentOffers value to set. * @return the DistributionModeInternal object itself. @@ -77,6 +66,7 @@ public Integer getMinConcurrentOffers() { @Generated public DistributionModeInternal setMinConcurrentOffers(Integer minConcurrentOffers) { this.minConcurrentOffers = minConcurrentOffers; + this.updatedProperties.add("minConcurrentOffers"); return this; } @@ -99,13 +89,12 @@ public Integer getMaxConcurrentOffers() { @Generated public DistributionModeInternal setMaxConcurrentOffers(Integer maxConcurrentOffers) { this.maxConcurrentOffers = maxConcurrentOffers; + this.updatedProperties.add("maxConcurrentOffers"); return this; } /** - * Get the bypassSelectors property: If set to true, then router will match workers to jobs even if they don't - * match label selectors. Warning: You may get workers that are not qualified for a job they are matched with if - * you set this variable to true. This flag is intended more for temporary usage. By default, set to false. + * Get the bypassSelectors property: If set to true, then router will match workers to jobs even if they don't match label selectors. Warning: You may get workers that are not qualified for a job they are matched with if you set this variable to true. This flag is intended more for temporary usage. By default, set to false. * * @return the bypassSelectors value. */ @@ -115,9 +104,7 @@ public Boolean isBypassSelectors() { } /** - * Set the bypassSelectors property: If set to true, then router will match workers to jobs even if they don't - * match label selectors. Warning: You may get workers that are not qualified for a job they are matched with if - * you set this variable to true. This flag is intended more for temporary usage. By default, set to false. + * Set the bypassSelectors property: If set to true, then router will match workers to jobs even if they don't match label selectors. Warning: You may get workers that are not qualified for a job they are matched with if you set this variable to true. This flag is intended more for temporary usage. By default, set to false. * * @param bypassSelectors the bypassSelectors value to set. * @return the DistributionModeInternal object itself. @@ -125,6 +112,170 @@ public Boolean isBypassSelectors() { @Generated public DistributionModeInternal setBypassSelectors(Boolean bypassSelectors) { this.bypassSelectors = bypassSelectors; + this.updatedProperties.add("bypassSelectors"); return this; } + + /* + * The type discriminator describing a sub-type of DistributionMode. + */ + @Generated + private DistributionModeKind kind; + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setDistributionModeInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Get the kind property: The type discriminator describing a sub-type of DistributionMode. + * + * @return the kind value. + */ + @Generated + public DistributionModeKind getKind() { + return this.kind; + } + + /** + * Set the kind property: The type discriminator describing a sub-type of DistributionMode. + * + * @param kind the kind value to set. + * @return the DistributionModeInternal object itself. + */ + @Generated + DistributionModeInternal setKind(DistributionModeKind kind) { + this.kind = kind; + this.updatedProperties.add("kind"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + jsonWriter.writeNumberField("minConcurrentOffers", this.minConcurrentOffers); + jsonWriter.writeNumberField("maxConcurrentOffers", this.maxConcurrentOffers); + jsonWriter.writeBooleanField("bypassSelectors", this.bypassSelectors); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (this.kind == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + } + } + if (updatedProperties.contains("minConcurrentOffers")) { + if (this.minConcurrentOffers == null) { + jsonWriter.writeNullField("minConcurrentOffers"); + } else { + jsonWriter.writeNumberField("minConcurrentOffers", this.minConcurrentOffers); + } + } + if (updatedProperties.contains("maxConcurrentOffers")) { + if (this.maxConcurrentOffers == null) { + jsonWriter.writeNullField("maxConcurrentOffers"); + } else { + jsonWriter.writeNumberField("maxConcurrentOffers", this.maxConcurrentOffers); + } + } + if (updatedProperties.contains("bypassSelectors")) { + if (this.bypassSelectors == null) { + jsonWriter.writeNullField("bypassSelectors"); + } else { + jsonWriter.writeBooleanField("bypassSelectors", this.bypassSelectors); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of DistributionModeInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of DistributionModeInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the DistributionModeInternal. + */ + @Generated + public static DistributionModeInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("bestWorker".equals(discriminatorValue)) { + return BestWorkerModeInternal.fromJson(readerToUse.reset()); + } else if ("longestIdle".equals(discriminatorValue)) { + return LongestIdleModeInternal.fromJson(readerToUse.reset()); + } else if ("roundRobin".equals(discriminatorValue)) { + return RoundRobinModeInternal.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static DistributionModeInternal fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + DistributionModeInternal deserializedDistributionModeInternal = new DistributionModeInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedDistributionModeInternal.kind = DistributionModeKind.fromString(reader.getString()); + } else if ("minConcurrentOffers".equals(fieldName)) { + deserializedDistributionModeInternal.minConcurrentOffers = reader.getNullable(JsonReader::getInt); + } else if ("maxConcurrentOffers".equals(fieldName)) { + deserializedDistributionModeInternal.maxConcurrentOffers = reader.getNullable(JsonReader::getInt); + } else if ("bypassSelectors".equals(fieldName)) { + deserializedDistributionModeInternal.bypassSelectors = reader.getNullable(JsonReader::getBoolean); + } else { + reader.skipChildren(); + } + } + return deserializedDistributionModeInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DistributionPolicyInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DistributionPolicyInternal.java index 4a8834fd85ca..774e1e8eea2b 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DistributionPolicyInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/DistributionPolicyInternal.java @@ -3,49 +3,51 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Policy governing how jobs are distributed to workers. */ @Fluent -public final class DistributionPolicyInternal { +public final class DistributionPolicyInternal implements JsonSerializable { /* * The entity tag for this resource. */ @Generated - @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY) private String etag; /* * Id of a distribution policy. */ @Generated - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) private String id; /* * Friendly name of this policy. */ @Generated - @JsonProperty(value = "name") private String name; /* * Number of seconds after which any offers created under this policy will be expired. */ @Generated - @JsonProperty(value = "offerExpiresAfterSeconds") private Double offerExpiresAfterSeconds; /* * Mode governing the specific distribution method. */ @Generated - @JsonProperty(value = "mode") private DistributionModeInternal mode; /** @@ -94,12 +96,12 @@ public String getName() { @Generated public DistributionPolicyInternal setName(String name) { this.name = name; + this.updatedProperties.add("name"); return this; } /** - * Get the offerExpiresAfterSeconds property: Number of seconds after which any offers created under this policy - * will be expired. + * Get the offerExpiresAfterSeconds property: Number of seconds after which any offers created under this policy will be expired. * * @return the offerExpiresAfterSeconds value. */ @@ -109,8 +111,7 @@ public Double getOfferExpiresAfterSeconds() { } /** - * Set the offerExpiresAfterSeconds property: Number of seconds after which any offers created under this policy - * will be expired. + * Set the offerExpiresAfterSeconds property: Number of seconds after which any offers created under this policy will be expired. * * @param offerExpiresAfterSeconds the offerExpiresAfterSeconds value to set. * @return the DistributionPolicyInternal object itself. @@ -118,6 +119,7 @@ public Double getOfferExpiresAfterSeconds() { @Generated public DistributionPolicyInternal setOfferExpiresAfterSeconds(Double offerExpiresAfterSeconds) { this.offerExpiresAfterSeconds = offerExpiresAfterSeconds; + this.updatedProperties.add("offerExpiresAfterSeconds"); return this; } @@ -140,6 +142,7 @@ public DistributionModeInternal getMode() { @Generated public DistributionPolicyInternal setMode(DistributionModeInternal mode) { this.mode = mode; + this.updatedProperties.add("mode"); return this; } @@ -164,4 +167,114 @@ public DistributionPolicyInternal setEtag(String etag) { this.etag = etag; return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setDistributionPolicyInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeNumberField("offerExpiresAfterSeconds", this.offerExpiresAfterSeconds); + jsonWriter.writeJsonField("mode", this.mode); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("name")) { + if (this.name == null) { + jsonWriter.writeNullField("name"); + } else { + jsonWriter.writeStringField("name", this.name); + } + } + if (updatedProperties.contains("offerExpiresAfterSeconds")) { + if (this.offerExpiresAfterSeconds == null) { + jsonWriter.writeNullField("offerExpiresAfterSeconds"); + } else { + jsonWriter.writeNumberField("offerExpiresAfterSeconds", this.offerExpiresAfterSeconds); + } + } + if (updatedProperties.contains("mode")) { + if (this.mode == null) { + jsonWriter.writeNullField("mode"); + } else { + this.mode.serializeAsJsonMergePatch(true); + jsonWriter.writeJsonField("mode", this.mode); + this.mode.serializeAsJsonMergePatch(false); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of DistributionPolicyInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of DistributionPolicyInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the DistributionPolicyInternal. + */ + @Generated + public static DistributionPolicyInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String etag = null; + String id = null; + String name = null; + Double offerExpiresAfterSeconds = null; + DistributionModeInternal mode = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("etag".equals(fieldName)) { + etag = reader.getString(); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("offerExpiresAfterSeconds".equals(fieldName)) { + offerExpiresAfterSeconds = reader.getNullable(JsonReader::getDouble); + } else if ("mode".equals(fieldName)) { + mode = DistributionModeInternal.fromJson(reader); + } else { + reader.skipChildren(); + } + } + DistributionPolicyInternal deserializedDistributionPolicyInternal = new DistributionPolicyInternal(); + deserializedDistributionPolicyInternal.etag = etag; + deserializedDistributionPolicyInternal.id = id; + deserializedDistributionPolicyInternal.name = name; + deserializedDistributionPolicyInternal.offerExpiresAfterSeconds = offerExpiresAfterSeconds; + deserializedDistributionPolicyInternal.mode = mode; + return deserializedDistributionPolicyInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionActionInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionActionInternal.java index d98350ca93de..b13fa9d6eee9 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionActionInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionActionInternal.java @@ -3,34 +3,27 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * The action to take when the exception is triggered. */ -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - include = JsonTypeInfo.As.PROPERTY, - property = "kind", - defaultImpl = ExceptionActionInternal.class) -@JsonTypeName("ExceptionActionInternal") -@JsonSubTypes({ - @JsonSubTypes.Type(name = "cancel", value = CancelExceptionActionInternal.class), - @JsonSubTypes.Type(name = "manualReclassify", value = ManualReclassifyExceptionActionInternal.class), - @JsonSubTypes.Type(name = "reclassify", value = ReclassifyExceptionActionInternal.class) }) @Fluent -public class ExceptionActionInternal { +public class ExceptionActionInternal implements JsonSerializable { /* * Unique Id of the exception action. */ @Generated - @JsonProperty(value = "id") private String id; /** @@ -38,6 +31,7 @@ public class ExceptionActionInternal { */ @Generated public ExceptionActionInternal() { + this.kind = ExceptionActionKind.fromString("ExceptionActionInternal"); } /** @@ -59,6 +53,150 @@ public String getId() { @Generated public ExceptionActionInternal setId(String id) { this.id = id; + this.updatedProperties.add("id"); return this; } + + /* + * The type discriminator describing a sub-type of ExceptionAction. + */ + @Generated + private ExceptionActionKind kind; + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setExceptionActionInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Get the kind property: The type discriminator describing a sub-type of ExceptionAction. + * + * @return the kind value. + */ + @Generated + public ExceptionActionKind getKind() { + return this.kind; + } + + /** + * Set the kind property: The type discriminator describing a sub-type of ExceptionAction. + * + * @param kind the kind value to set. + * @return the ExceptionActionInternal object itself. + */ + @Generated + ExceptionActionInternal setKind(ExceptionActionKind kind) { + this.kind = kind; + this.updatedProperties.add("kind"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + jsonWriter.writeStringField("id", this.id); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (this.kind == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + } + } + if (updatedProperties.contains("id")) { + if (this.id == null) { + jsonWriter.writeNullField("id"); + } else { + jsonWriter.writeStringField("id", this.id); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ExceptionActionInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ExceptionActionInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ExceptionActionInternal. + */ + @Generated + public static ExceptionActionInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("cancel".equals(discriminatorValue)) { + return CancelExceptionActionInternal.fromJson(readerToUse.reset()); + } else if ("manualReclassify".equals(discriminatorValue)) { + return ManualReclassifyExceptionActionInternal.fromJson(readerToUse.reset()); + } else if ("reclassify".equals(discriminatorValue)) { + return ReclassifyExceptionActionInternal.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static ExceptionActionInternal fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ExceptionActionInternal deserializedExceptionActionInternal = new ExceptionActionInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedExceptionActionInternal.kind = ExceptionActionKind.fromString(reader.getString()); + } else if ("id".equals(fieldName)) { + deserializedExceptionActionInternal.id = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedExceptionActionInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionActionKind.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionActionKind.java new file mode 100644 index 000000000000..7d91487384ae --- /dev/null +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionActionKind.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.communication.jobrouter.implementation.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Discriminators for supported exception action types. + */ +public final class ExceptionActionKind extends ExpandableStringEnum { + + /** + * Discriminator value for CancelExceptionAction. + */ + @Generated + public static final ExceptionActionKind CANCEL = fromString("cancel"); + + /** + * Discriminator value for ManualReclassifyExceptionAction. + */ + @Generated + public static final ExceptionActionKind MANUAL_RECLASSIFY = fromString("manualReclassify"); + + /** + * Discriminator value for ReclassifyExceptionAction. + */ + @Generated + public static final ExceptionActionKind RECLASSIFY = fromString("reclassify"); + + /** + * Creates a new instance of ExceptionActionKind value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public ExceptionActionKind() { + } + + /** + * Creates or finds a ExceptionActionKind from its string representation. + * + * @param name a name to look for. + * @return the corresponding ExceptionActionKind. + */ + @Generated + public static ExceptionActionKind fromString(String name) { + return fromString(name, ExceptionActionKind.class); + } + + /** + * Gets known ExceptionActionKind values. + * + * @return known ExceptionActionKind values. + */ + @Generated + public static Collection values() { + return values(ExceptionActionKind.class); + } +} diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionPolicyInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionPolicyInternal.java index f6eb0e2468d8..a73717f23216 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionPolicyInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionPolicyInternal.java @@ -3,36 +3,40 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * A policy that defines actions to execute when exception are triggered. */ @Fluent -public final class ExceptionPolicyInternal { +public final class ExceptionPolicyInternal implements JsonSerializable { /* * Id of an exception policy. */ @Generated - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) private String id; /* * Friendly name of this policy. */ @Generated - @JsonProperty(value = "name") private String name; /* * A collection of exception rules on the exception policy. */ @Generated - @JsonProperty(value = "exceptionRules") private List exceptionRules; /** @@ -71,6 +75,7 @@ public String getName() { @Generated public ExceptionPolicyInternal setName(String name) { this.name = name; + this.updatedProperties.add("name"); return this; } @@ -88,7 +93,6 @@ public List getExceptionRules() { * The entity tag for this resource. */ @Generated - @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY) private String etag; /** @@ -110,6 +114,7 @@ public String getEtag() { @Generated public ExceptionPolicyInternal setExceptionRules(List exceptionRules) { this.exceptionRules = exceptionRules; + this.updatedProperties.add("exceptionRules"); return this; } @@ -134,4 +139,102 @@ public ExceptionPolicyInternal setEtag(String etag) { this.etag = etag; return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setExceptionPolicyInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeArrayField("exceptionRules", this.exceptionRules, + (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("name")) { + if (this.name == null) { + jsonWriter.writeNullField("name"); + } else { + jsonWriter.writeStringField("name", this.name); + } + } + if (updatedProperties.contains("exceptionRules")) { + if (this.exceptionRules == null) { + jsonWriter.writeNullField("exceptionRules"); + } else { + jsonWriter.writeArrayField("exceptionRules", this.exceptionRules, + (writer, element) -> writer.writeJson(element)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ExceptionPolicyInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ExceptionPolicyInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the ExceptionPolicyInternal. + */ + @Generated + public static ExceptionPolicyInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String etag = null; + String id = null; + String name = null; + List exceptionRules = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("etag".equals(fieldName)) { + etag = reader.getString(); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("exceptionRules".equals(fieldName)) { + exceptionRules = reader.readArray(reader1 -> ExceptionRuleInternal.fromJson(reader1)); + } else { + reader.skipChildren(); + } + } + ExceptionPolicyInternal deserializedExceptionPolicyInternal = new ExceptionPolicyInternal(); + deserializedExceptionPolicyInternal.etag = etag; + deserializedExceptionPolicyInternal.id = id; + deserializedExceptionPolicyInternal.name = name; + deserializedExceptionPolicyInternal.exceptionRules = exceptionRules; + return deserializedExceptionPolicyInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionRuleInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionRuleInternal.java index ba0655832367..5555f164a09a 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionRuleInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionRuleInternal.java @@ -3,56 +3,42 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * A rule that defines actions to execute upon a specific trigger. */ -@Immutable -public final class ExceptionRuleInternal { +@Fluent +public final class ExceptionRuleInternal implements JsonSerializable { /* * Id of an exception rule. */ @Generated - @JsonProperty(value = "id") private String id; /* * The trigger for this exception rule. */ @Generated - @JsonProperty(value = "trigger") private ExceptionTriggerInternal trigger; /* * A collection of actions to perform once the exception is triggered. */ @Generated - @JsonProperty(value = "actions") private List actions; - /** - * Creates an instance of ExceptionRuleInternal class. - * - * @param id the id value to set. - * @param trigger the trigger value to set. - * @param actions the actions value to set. - */ - @Generated - @JsonCreator - public ExceptionRuleInternal(@JsonProperty(value = "id") String id, - @JsonProperty(value = "trigger") ExceptionTriggerInternal trigger, - @JsonProperty(value = "actions") List actions) { - this.id = id; - this.trigger = trigger; - this.actions = actions; - } - /** * Get the id property: Id of an exception rule. * @@ -82,4 +68,150 @@ public ExceptionTriggerInternal getTrigger() { public List getActions() { return this.actions; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setExceptionRuleInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Creates an instance of ExceptionRuleInternal class. + */ + @Generated + public ExceptionRuleInternal() { + } + + /** + * Set the id property: Id of an exception rule. + *

Required when create the resource.

+ * + * @param id the id value to set. + * @return the ExceptionRuleInternal object itself. + */ + @Generated + public ExceptionRuleInternal setId(String id) { + this.id = id; + this.updatedProperties.add("id"); + return this; + } + + /** + * Set the trigger property: The trigger for this exception rule. + *

Required when create the resource.

+ * + * @param trigger the trigger value to set. + * @return the ExceptionRuleInternal object itself. + */ + @Generated + public ExceptionRuleInternal setTrigger(ExceptionTriggerInternal trigger) { + this.trigger = trigger; + this.updatedProperties.add("trigger"); + return this; + } + + /** + * Set the actions property: A collection of actions to perform once the exception is triggered. + *

Required when create the resource.

+ * + * @param actions the actions value to set. + * @return the ExceptionRuleInternal object itself. + */ + @Generated + public ExceptionRuleInternal setActions(List actions) { + this.actions = actions; + this.updatedProperties.add("actions"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeJsonField("trigger", this.trigger); + jsonWriter.writeArrayField("actions", this.actions, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("id")) { + if (this.id == null) { + jsonWriter.writeNullField("id"); + } else { + jsonWriter.writeStringField("id", this.id); + } + } + if (updatedProperties.contains("trigger")) { + if (this.trigger == null) { + jsonWriter.writeNullField("trigger"); + } else { + this.trigger.serializeAsJsonMergePatch(true); + jsonWriter.writeJsonField("trigger", this.trigger); + this.trigger.serializeAsJsonMergePatch(false); + } + } + if (updatedProperties.contains("actions")) { + if (this.actions == null) { + jsonWriter.writeNullField("actions"); + } else { + jsonWriter.writeArrayField("actions", this.actions, (writer, element) -> writer.writeJson(element)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ExceptionRuleInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ExceptionRuleInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ExceptionRuleInternal. + */ + @Generated + public static ExceptionRuleInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ExceptionRuleInternal deserializedExceptionRuleInternal = new ExceptionRuleInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + deserializedExceptionRuleInternal.id = reader.getString(); + } else if ("trigger".equals(fieldName)) { + deserializedExceptionRuleInternal.trigger = ExceptionTriggerInternal.fromJson(reader); + } else if ("actions".equals(fieldName)) { + List actions + = reader.readArray(reader1 -> ExceptionActionInternal.fromJson(reader1)); + deserializedExceptionRuleInternal.actions = actions; + } else { + reader.skipChildren(); + } + } + return deserializedExceptionRuleInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionTriggerInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionTriggerInternal.java index d214de70303e..7cf40baef948 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionTriggerInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionTriggerInternal.java @@ -3,31 +3,159 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Abstract base class for defining a trigger for exception rules. */ -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - include = JsonTypeInfo.As.PROPERTY, - property = "kind", - defaultImpl = ExceptionTriggerInternal.class) -@JsonTypeName("ExceptionTriggerInternal") -@JsonSubTypes({ - @JsonSubTypes.Type(name = "queueLength", value = QueueLengthExceptionTriggerInternal.class), - @JsonSubTypes.Type(name = "waitTime", value = WaitTimeExceptionTriggerInternal.class) }) @Immutable -public class ExceptionTriggerInternal { +public class ExceptionTriggerInternal implements JsonSerializable { /** * Creates an instance of ExceptionTriggerInternal class. */ @Generated public ExceptionTriggerInternal() { + this.kind = ExceptionTriggerKind.fromString("ExceptionTriggerInternal"); + } + + /* + * The type discriminator describing a sub-type of ExceptionTrigger. + */ + @Generated + private ExceptionTriggerKind kind; + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setExceptionTriggerInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Get the kind property: The type discriminator describing a sub-type of ExceptionTrigger. + * + * @return the kind value. + */ + @Generated + public ExceptionTriggerKind getKind() { + return this.kind; + } + + /** + * Set the kind property: The type discriminator describing a sub-type of ExceptionTrigger. + * + * @param kind the kind value to set. + * @return the ExceptionTriggerInternal object itself. + */ + @Generated + ExceptionTriggerInternal setKind(ExceptionTriggerKind kind) { + this.kind = kind; + this.updatedProperties.add("kind"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (this.kind == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ExceptionTriggerInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ExceptionTriggerInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ExceptionTriggerInternal. + */ + @Generated + public static ExceptionTriggerInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("queueLength".equals(discriminatorValue)) { + return QueueLengthExceptionTriggerInternal.fromJson(readerToUse.reset()); + } else if ("waitTime".equals(discriminatorValue)) { + return WaitTimeExceptionTriggerInternal.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static ExceptionTriggerInternal fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ExceptionTriggerInternal deserializedExceptionTriggerInternal = new ExceptionTriggerInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedExceptionTriggerInternal.kind = ExceptionTriggerKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedExceptionTriggerInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionTriggerKind.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionTriggerKind.java new file mode 100644 index 000000000000..1540dab98ef0 --- /dev/null +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExceptionTriggerKind.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.communication.jobrouter.implementation.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Discriminators for supported exception trigger types. + */ +public final class ExceptionTriggerKind extends ExpandableStringEnum { + + /** + * Discriminator value for QueueLengthExceptionTrigger. + */ + @Generated + public static final ExceptionTriggerKind QUEUE_LENGTH = fromString("queueLength"); + + /** + * Discriminator value for WaitTimeExceptionTrigger. + */ + @Generated + public static final ExceptionTriggerKind WAIT_TIME = fromString("waitTime"); + + /** + * Creates a new instance of ExceptionTriggerKind value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public ExceptionTriggerKind() { + } + + /** + * Creates or finds a ExceptionTriggerKind from its string representation. + * + * @param name a name to look for. + * @return the corresponding ExceptionTriggerKind. + */ + @Generated + public static ExceptionTriggerKind fromString(String name) { + return fromString(name, ExceptionTriggerKind.class); + } + + /** + * Gets known ExceptionTriggerKind values. + * + * @return known ExceptionTriggerKind values. + */ + @Generated + public static Collection values() { + return values(ExceptionTriggerKind.class); + } +} diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExpressionRouterRuleInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExpressionRouterRuleInternal.java index bdf81ae4a914..22cb98ad0a24 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExpressionRouterRuleInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ExpressionRouterRuleInternal.java @@ -3,19 +3,21 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.communication.jobrouter.models.ExpressionRouterRuleLanguage; +import com.azure.communication.jobrouter.models.RouterRuleKind; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * A rule providing inline expression rules. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("expression") @Fluent public final class ExpressionRouterRuleInternal extends RouterRuleInternal { @@ -23,27 +25,14 @@ public final class ExpressionRouterRuleInternal extends RouterRuleInternal { * The expression language to compile to and execute. */ @Generated - @JsonProperty(value = "language") private ExpressionRouterRuleLanguage language; /* * An expression to evaluate. Should contain return statement with calculated values. */ @Generated - @JsonProperty(value = "expression") private String expression; - /** - * Creates an instance of ExpressionRouterRuleInternal class. - * - * @param expression the expression value to set. - */ - @Generated - @JsonCreator - public ExpressionRouterRuleInternal(@JsonProperty(value = "expression") String expression) { - this.expression = expression; - } - /** * Get the language property: The expression language to compile to and execute. * @@ -63,6 +52,7 @@ public ExpressionRouterRuleLanguage getLanguage() { @Generated public ExpressionRouterRuleInternal setLanguage(ExpressionRouterRuleLanguage language) { this.language = language; + this.updatedProperties.add("language"); return this; } @@ -75,4 +65,120 @@ public ExpressionRouterRuleInternal setLanguage(ExpressionRouterRuleLanguage lan public String getExpression() { return this.expression; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setExpressionRouterRuleInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Creates an instance of ExpressionRouterRuleInternal class. + */ + @Generated + public ExpressionRouterRuleInternal() { + setKind(RouterRuleKind.EXPRESSION); + } + + /** + * Set the expression property: An expression to evaluate. Should contain return statement with calculated values. + *

Required when create the resource.

+ * + * @param expression the expression value to set. + * @return the ExpressionRouterRuleInternal object itself. + */ + @Generated + public ExpressionRouterRuleInternal setExpression(String expression) { + this.expression = expression; + this.updatedProperties.add("expression"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("language", this.language == null ? null : this.language.toString()); + jsonWriter.writeStringField("expression", this.expression); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("language")) { + if (this.language == null) { + jsonWriter.writeNullField("language"); + } else { + jsonWriter.writeStringField("language", this.language == null ? null : this.language.toString()); + } + } + if (updatedProperties.contains("expression")) { + if (this.expression == null) { + jsonWriter.writeNullField("expression"); + } else { + jsonWriter.writeStringField("expression", this.expression); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ExpressionRouterRuleInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ExpressionRouterRuleInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ExpressionRouterRuleInternal. + */ + @Generated + public static ExpressionRouterRuleInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ExpressionRouterRuleInternal deserializedExpressionRouterRuleInternal = new ExpressionRouterRuleInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedExpressionRouterRuleInternal.setKind(RouterRuleKind.fromString(reader.getString())); + } else if ("language".equals(fieldName)) { + deserializedExpressionRouterRuleInternal.language + = ExpressionRouterRuleLanguage.fromString(reader.getString()); + } else if ("expression".equals(fieldName)) { + deserializedExpressionRouterRuleInternal.expression = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedExpressionRouterRuleInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/FunctionRouterRuleInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/FunctionRouterRuleInternal.java index 6d0908fdf80d..026f18417098 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/FunctionRouterRuleInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/FunctionRouterRuleInternal.java @@ -3,19 +3,21 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.communication.jobrouter.models.FunctionRouterRuleCredential; +import com.azure.communication.jobrouter.models.RouterRuleKind; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * A rule providing a binding to an HTTP Triggered Azure Function. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("function") @Fluent public final class FunctionRouterRuleInternal extends RouterRuleInternal { @@ -23,27 +25,14 @@ public final class FunctionRouterRuleInternal extends RouterRuleInternal { * URL for Azure Function. */ @Generated - @JsonProperty(value = "functionUri") private String functionUri; /* * Credentials used to access Azure function rule. */ @Generated - @JsonProperty(value = "credential") private FunctionRouterRuleCredential credential; - /** - * Creates an instance of FunctionRouterRuleInternal class. - * - * @param functionUri the functionUri value to set. - */ - @Generated - @JsonCreator - public FunctionRouterRuleInternal(@JsonProperty(value = "functionUri") String functionUri) { - this.functionUri = functionUri; - } - /** * Get the functionUri property: URL for Azure Function. * @@ -73,6 +62,124 @@ public FunctionRouterRuleCredential getCredential() { @Generated public FunctionRouterRuleInternal setCredential(FunctionRouterRuleCredential credential) { this.credential = credential; + this.updatedProperties.add("credential"); + return this; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setFunctionRouterRuleInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Creates an instance of FunctionRouterRuleInternal class. + */ + @Generated + public FunctionRouterRuleInternal() { + setKind(RouterRuleKind.FUNCTION); + } + + /** + * Set the functionUri property: URL for Azure Function. + *

Required when create the resource.

+ * + * @param functionUri the functionUri value to set. + * @return the FunctionRouterRuleInternal object itself. + */ + @Generated + public FunctionRouterRuleInternal setFunctionUri(String functionUri) { + this.functionUri = functionUri; + this.updatedProperties.add("functionUri"); return this; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("functionUri", this.functionUri); + jsonWriter.writeJsonField("credential", this.credential); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("functionUri")) { + if (this.functionUri == null) { + jsonWriter.writeNullField("functionUri"); + } else { + jsonWriter.writeStringField("functionUri", this.functionUri); + } + } + if (updatedProperties.contains("credential")) { + if (this.credential == null) { + jsonWriter.writeNullField("credential"); + } else { + this.credential.serializeAsJsonMergePatch(true); + jsonWriter.writeJsonField("credential", this.credential); + this.credential.serializeAsJsonMergePatch(false); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of FunctionRouterRuleInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of FunctionRouterRuleInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the FunctionRouterRuleInternal. + */ + @Generated + public static FunctionRouterRuleInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + FunctionRouterRuleInternal deserializedFunctionRouterRuleInternal = new FunctionRouterRuleInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedFunctionRouterRuleInternal.setKind(RouterRuleKind.fromString(reader.getString())); + } else if ("functionUri".equals(fieldName)) { + deserializedFunctionRouterRuleInternal.functionUri = reader.getString(); + } else if ("credential".equals(fieldName)) { + deserializedFunctionRouterRuleInternal.credential = FunctionRouterRuleCredential.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedFunctionRouterRuleInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/JobMatchingModeInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/JobMatchingModeInternal.java index 6de389a113f3..29a51bc461a6 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/JobMatchingModeInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/JobMatchingModeInternal.java @@ -3,36 +3,165 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.JobMatchingModeKind; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * A matching mode of one of the following types: * QueueAndMatchMode: Used when matching worker to a job is required to be done right after job is queued. - * ScheduleAndSuspendMode: Used for scheduling jobs to be queued at a future time. At specified time, matching of a - * worker to the job will not start automatically. + * ScheduleAndSuspendMode: Used for scheduling jobs to be queued at a future time. At specified time, matching of a worker to the job will not start automatically. * SuspendMode: Used when matching workers to a job needs to be suspended. */ -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - include = JsonTypeInfo.As.PROPERTY, - property = "kind", - defaultImpl = JobMatchingModeInternal.class) -@JsonTypeName("JobMatchingModeInternal") -@JsonSubTypes({ - @JsonSubTypes.Type(name = "scheduleAndSuspend", value = ScheduleAndSuspendModeInternal.class), - @JsonSubTypes.Type(name = "queueAndMatch", value = QueueAndMatchModeInternal.class), - @JsonSubTypes.Type(name = "suspend", value = SuspendModeInternal.class) }) @Immutable -public class JobMatchingModeInternal { +public class JobMatchingModeInternal implements JsonSerializable { /** * Creates an instance of JobMatchingModeInternal class. */ @Generated public JobMatchingModeInternal() { + this.kind = JobMatchingModeKind.fromString("JobMatchingModeInternal"); + } + + /* + * The type discriminator describing a sub-type of JobMatchingMode. + */ + @Generated + private JobMatchingModeKind kind; + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setJobMatchingModeInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Get the kind property: The type discriminator describing a sub-type of JobMatchingMode. + * + * @return the kind value. + */ + @Generated + public JobMatchingModeKind getKind() { + return this.kind; + } + + /** + * Set the kind property: The type discriminator describing a sub-type of JobMatchingMode. + * + * @param kind the kind value to set. + * @return the JobMatchingModeInternal object itself. + */ + @Generated + JobMatchingModeInternal setKind(JobMatchingModeKind kind) { + this.kind = kind; + this.updatedProperties.add("kind"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (this.kind == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of JobMatchingModeInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of JobMatchingModeInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the JobMatchingModeInternal. + */ + @Generated + public static JobMatchingModeInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("scheduleAndSuspend".equals(discriminatorValue)) { + return ScheduleAndSuspendModeInternal.fromJson(readerToUse.reset()); + } else if ("queueAndMatch".equals(discriminatorValue)) { + return QueueAndMatchModeInternal.fromJson(readerToUse.reset()); + } else if ("suspend".equals(discriminatorValue)) { + return SuspendModeInternal.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static JobMatchingModeInternal fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + JobMatchingModeInternal deserializedJobMatchingModeInternal = new JobMatchingModeInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedJobMatchingModeInternal.kind = JobMatchingModeKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedJobMatchingModeInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/LongestIdleModeInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/LongestIdleModeInternal.java index 08175542f1fa..88ad7e2d0ed9 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/LongestIdleModeInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/LongestIdleModeInternal.java @@ -3,16 +3,20 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.DistributionModeKind; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Jobs are directed to the worker who has been idle longest. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("longestIdle") @Fluent public final class LongestIdleModeInternal extends DistributionModeInternal { @@ -21,6 +25,7 @@ public final class LongestIdleModeInternal extends DistributionModeInternal { */ @Generated public LongestIdleModeInternal() { + setKind(DistributionModeKind.LONGEST_IDLE); } /** @@ -30,6 +35,7 @@ public LongestIdleModeInternal() { @Override public LongestIdleModeInternal setMinConcurrentOffers(Integer minConcurrentOffers) { super.setMinConcurrentOffers(minConcurrentOffers); + this.updatedProperties.add("minConcurrentOffers"); return this; } @@ -40,6 +46,7 @@ public LongestIdleModeInternal setMinConcurrentOffers(Integer minConcurrentOffer @Override public LongestIdleModeInternal setMaxConcurrentOffers(Integer maxConcurrentOffers) { super.setMaxConcurrentOffers(maxConcurrentOffers); + this.updatedProperties.add("maxConcurrentOffers"); return this; } @@ -50,6 +57,110 @@ public LongestIdleModeInternal setMaxConcurrentOffers(Integer maxConcurrentOffer @Override public LongestIdleModeInternal setBypassSelectors(Boolean bypassSelectors) { super.setBypassSelectors(bypassSelectors); + this.updatedProperties.add("bypassSelectors"); return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setLongestIdleModeInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeNumberField("minConcurrentOffers", getMinConcurrentOffers()); + jsonWriter.writeNumberField("maxConcurrentOffers", getMaxConcurrentOffers()); + jsonWriter.writeBooleanField("bypassSelectors", isBypassSelectors()); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("minConcurrentOffers")) { + if (getMinConcurrentOffers() == null) { + jsonWriter.writeNullField("minConcurrentOffers"); + } else { + jsonWriter.writeNumberField("minConcurrentOffers", getMinConcurrentOffers()); + } + } + if (updatedProperties.contains("maxConcurrentOffers")) { + if (getMaxConcurrentOffers() == null) { + jsonWriter.writeNullField("maxConcurrentOffers"); + } else { + jsonWriter.writeNumberField("maxConcurrentOffers", getMaxConcurrentOffers()); + } + } + if (updatedProperties.contains("bypassSelectors")) { + if (isBypassSelectors() == null) { + jsonWriter.writeNullField("bypassSelectors"); + } else { + jsonWriter.writeBooleanField("bypassSelectors", isBypassSelectors()); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of LongestIdleModeInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of LongestIdleModeInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the LongestIdleModeInternal. + */ + @Generated + public static LongestIdleModeInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + LongestIdleModeInternal deserializedLongestIdleModeInternal = new LongestIdleModeInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedLongestIdleModeInternal.setKind(DistributionModeKind.fromString(reader.getString())); + } else if ("minConcurrentOffers".equals(fieldName)) { + deserializedLongestIdleModeInternal.setMinConcurrentOffers(reader.getNullable(JsonReader::getInt)); + } else if ("maxConcurrentOffers".equals(fieldName)) { + deserializedLongestIdleModeInternal.setMaxConcurrentOffers(reader.getNullable(JsonReader::getInt)); + } else if ("bypassSelectors".equals(fieldName)) { + deserializedLongestIdleModeInternal.setBypassSelectors(reader.getNullable(JsonReader::getBoolean)); + } else { + reader.skipChildren(); + } + } + return deserializedLongestIdleModeInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ManualReclassifyExceptionActionInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ManualReclassifyExceptionActionInternal.java index f19b7740d7b7..1a2eb08eda68 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ManualReclassifyExceptionActionInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ManualReclassifyExceptionActionInternal.java @@ -3,18 +3,20 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * An action that manually reclassifies a job by providing the queue, priority and worker selectors. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("manualReclassify") @Fluent public final class ManualReclassifyExceptionActionInternal extends ExceptionActionInternal { @@ -22,21 +24,18 @@ public final class ManualReclassifyExceptionActionInternal extends ExceptionActi * Updated QueueId. */ @Generated - @JsonProperty(value = "queueId") private String queueId; /* * Updated Priority. */ @Generated - @JsonProperty(value = "priority") private Integer priority; /* * Updated WorkerSelectors. */ @Generated - @JsonProperty(value = "workerSelectors") private List workerSelectors; /** @@ -44,6 +43,7 @@ public final class ManualReclassifyExceptionActionInternal extends ExceptionActi */ @Generated public ManualReclassifyExceptionActionInternal() { + setKind(ExceptionActionKind.MANUAL_RECLASSIFY); } /** @@ -65,6 +65,7 @@ public String getQueueId() { @Generated public ManualReclassifyExceptionActionInternal setQueueId(String queueId) { this.queueId = queueId; + this.updatedProperties.add("queueId"); return this; } @@ -87,6 +88,7 @@ public Integer getPriority() { @Generated public ManualReclassifyExceptionActionInternal setPriority(Integer priority) { this.priority = priority; + this.updatedProperties.add("priority"); return this; } @@ -110,6 +112,7 @@ public List getWorkerSelectors() { public ManualReclassifyExceptionActionInternal setWorkerSelectors(List workerSelectors) { this.workerSelectors = workerSelectors; + this.updatedProperties.add("workerSelectors"); return this; } @@ -120,6 +123,127 @@ public List getWorkerSelectors() { @Override public ManualReclassifyExceptionActionInternal setId(String id) { super.setId(id); + this.updatedProperties.add("id"); return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setManualReclassifyExceptionActionInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("id", getId()); + jsonWriter.writeStringField("queueId", this.queueId); + jsonWriter.writeNumberField("priority", this.priority); + jsonWriter.writeArrayField("workerSelectors", this.workerSelectors, + (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("id")) { + if (getId() == null) { + jsonWriter.writeNullField("id"); + } else { + jsonWriter.writeStringField("id", getId()); + } + } + if (updatedProperties.contains("queueId")) { + if (this.queueId == null) { + jsonWriter.writeNullField("queueId"); + } else { + jsonWriter.writeStringField("queueId", this.queueId); + } + } + if (updatedProperties.contains("priority")) { + if (this.priority == null) { + jsonWriter.writeNullField("priority"); + } else { + jsonWriter.writeNumberField("priority", this.priority); + } + } + if (updatedProperties.contains("workerSelectors")) { + if (this.workerSelectors == null) { + jsonWriter.writeNullField("workerSelectors"); + } else { + jsonWriter.writeArrayField("workerSelectors", this.workerSelectors, + (writer, element) -> writer.writeJson(element)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ManualReclassifyExceptionActionInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ManualReclassifyExceptionActionInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ManualReclassifyExceptionActionInternal. + */ + @Generated + public static ManualReclassifyExceptionActionInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ManualReclassifyExceptionActionInternal deserializedManualReclassifyExceptionActionInternal + = new ManualReclassifyExceptionActionInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedManualReclassifyExceptionActionInternal + .setKind(ExceptionActionKind.fromString(reader.getString())); + } else if ("id".equals(fieldName)) { + deserializedManualReclassifyExceptionActionInternal.setId(reader.getString()); + } else if ("queueId".equals(fieldName)) { + deserializedManualReclassifyExceptionActionInternal.queueId = reader.getString(); + } else if ("priority".equals(fieldName)) { + deserializedManualReclassifyExceptionActionInternal.priority + = reader.getNullable(JsonReader::getInt); + } else if ("workerSelectors".equals(fieldName)) { + List workerSelectors + = reader.readArray(reader1 -> RouterWorkerSelectorInternal.fromJson(reader1)); + deserializedManualReclassifyExceptionActionInternal.workerSelectors = workerSelectors; + } else { + reader.skipChildren(); + } + } + return deserializedManualReclassifyExceptionActionInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/PassThroughQueueSelectorAttachmentInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/PassThroughQueueSelectorAttachmentInternal.java index 27cea4455e99..abae8b08f0a4 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/PassThroughQueueSelectorAttachmentInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/PassThroughQueueSelectorAttachmentInternal.java @@ -3,67 +3,187 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.communication.jobrouter.models.LabelOperator; +import com.azure.communication.jobrouter.models.QueueSelectorAttachmentKind; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Attaches a queue selector where the value is passed through from a job's label with the same key. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("passThrough") -@Immutable +@Fluent public final class PassThroughQueueSelectorAttachmentInternal extends QueueSelectorAttachmentInternal { /* * The label key to query against. */ @Generated - @JsonProperty(value = "key") private String key; /* * Describes how the value of the label is compared to the value pass through. */ @Generated - @JsonProperty(value = "labelOperator") private LabelOperator labelOperator; + /** + * Get the key property: The label key to query against. + * + * @return the key value. + */ + @Generated + public String getKey() { + return this.key; + } + + /** + * Get the labelOperator property: Describes how the value of the label is compared to the value pass through. + * + * @return the labelOperator value. + */ + @Generated + public LabelOperator getLabelOperator() { + return this.labelOperator; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setPassThroughQueueSelectorAttachmentInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of PassThroughQueueSelectorAttachmentInternal class. + */ + @Generated + public PassThroughQueueSelectorAttachmentInternal() { + setKind(QueueSelectorAttachmentKind.PASS_THROUGH); + } + + /** + * Set the key property: The label key to query against. + *

Required when create the resource.

* * @param key the key value to set. - * @param labelOperator the labelOperator value to set. + * @return the PassThroughQueueSelectorAttachmentInternal object itself. */ @Generated - @JsonCreator - public PassThroughQueueSelectorAttachmentInternal(@JsonProperty(value = "key") String key, - @JsonProperty(value = "labelOperator") LabelOperator labelOperator) { + public PassThroughQueueSelectorAttachmentInternal setKey(String key) { this.key = key; - this.labelOperator = labelOperator; + this.updatedProperties.add("key"); + return this; } /** - * Get the key property: The label key to query against. + * Set the labelOperator property: Describes how the value of the label is compared to the value pass through. + *

Required when create the resource.

* - * @return the key value. + * @param labelOperator the labelOperator value to set. + * @return the PassThroughQueueSelectorAttachmentInternal object itself. */ @Generated - public String getKey() { - return this.key; + public PassThroughQueueSelectorAttachmentInternal setLabelOperator(LabelOperator labelOperator) { + this.labelOperator = labelOperator; + this.updatedProperties.add("labelOperator"); + return this; } /** - * Get the labelOperator property: Describes how the value of the label is compared to the value pass through. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("key", this.key); + jsonWriter.writeStringField("labelOperator", + this.labelOperator == null ? null : this.labelOperator.toString()); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("key")) { + if (this.key == null) { + jsonWriter.writeNullField("key"); + } else { + jsonWriter.writeStringField("key", this.key); + } + } + if (updatedProperties.contains("labelOperator")) { + if (this.labelOperator == null) { + jsonWriter.writeNullField("labelOperator"); + } else { + jsonWriter.writeStringField("labelOperator", + this.labelOperator == null ? null : this.labelOperator.toString()); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of PassThroughQueueSelectorAttachmentInternal from the JsonReader. * - * @return the labelOperator value. + * @param jsonReader The JsonReader being read. + * @return An instance of PassThroughQueueSelectorAttachmentInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the PassThroughQueueSelectorAttachmentInternal. */ @Generated - public LabelOperator getLabelOperator() { - return this.labelOperator; + public static PassThroughQueueSelectorAttachmentInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + PassThroughQueueSelectorAttachmentInternal deserializedPassThroughQueueSelectorAttachmentInternal + = new PassThroughQueueSelectorAttachmentInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedPassThroughQueueSelectorAttachmentInternal + .setKind(QueueSelectorAttachmentKind.fromString(reader.getString())); + } else if ("key".equals(fieldName)) { + deserializedPassThroughQueueSelectorAttachmentInternal.key = reader.getString(); + } else if ("labelOperator".equals(fieldName)) { + deserializedPassThroughQueueSelectorAttachmentInternal.labelOperator + = LabelOperator.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedPassThroughQueueSelectorAttachmentInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/PassThroughWorkerSelectorAttachmentInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/PassThroughWorkerSelectorAttachmentInternal.java index 28070824d00d..dada37cbbced 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/PassThroughWorkerSelectorAttachmentInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/PassThroughWorkerSelectorAttachmentInternal.java @@ -3,19 +3,21 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.communication.jobrouter.models.LabelOperator; +import com.azure.communication.jobrouter.models.WorkerSelectorAttachmentKind; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Attaches a worker selector where the value is passed through from a job's label with the same key. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("passThrough") @Fluent public final class PassThroughWorkerSelectorAttachmentInternal extends WorkerSelectorAttachmentInternal { @@ -23,37 +25,20 @@ public final class PassThroughWorkerSelectorAttachmentInternal extends WorkerSel * The label key to query against. */ @Generated - @JsonProperty(value = "key") private String key; /* * Describes how the value of the label is compared to the value pass through. */ @Generated - @JsonProperty(value = "labelOperator") private LabelOperator labelOperator; /* * Describes how long the attached label selector is valid in seconds. */ @Generated - @JsonProperty(value = "expiresAfterSeconds") private Double expiresAfterSeconds; - /** - * Creates an instance of PassThroughWorkerSelectorAttachmentInternal class. - * - * @param key the key value to set. - * @param labelOperator the labelOperator value to set. - */ - @Generated - @JsonCreator - public PassThroughWorkerSelectorAttachmentInternal(@JsonProperty(value = "key") String key, - @JsonProperty(value = "labelOperator") LabelOperator labelOperator) { - this.key = key; - this.labelOperator = labelOperator; - } - /** * Get the key property: The label key to query against. * @@ -93,6 +78,152 @@ public Double getExpiresAfterSeconds() { @Generated public PassThroughWorkerSelectorAttachmentInternal setExpiresAfterSeconds(Double expiresAfterSeconds) { this.expiresAfterSeconds = expiresAfterSeconds; + this.updatedProperties.add("expiresAfterSeconds"); + return this; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setPassThroughWorkerSelectorAttachmentInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Creates an instance of PassThroughWorkerSelectorAttachmentInternal class. + */ + @Generated + public PassThroughWorkerSelectorAttachmentInternal() { + setKind(WorkerSelectorAttachmentKind.PASS_THROUGH); + } + + /** + * Set the key property: The label key to query against. + *

Required when create the resource.

+ * + * @param key the key value to set. + * @return the PassThroughWorkerSelectorAttachmentInternal object itself. + */ + @Generated + public PassThroughWorkerSelectorAttachmentInternal setKey(String key) { + this.key = key; + this.updatedProperties.add("key"); return this; } + + /** + * Set the labelOperator property: Describes how the value of the label is compared to the value pass through. + *

Required when create the resource.

+ * + * @param labelOperator the labelOperator value to set. + * @return the PassThroughWorkerSelectorAttachmentInternal object itself. + */ + @Generated + public PassThroughWorkerSelectorAttachmentInternal setLabelOperator(LabelOperator labelOperator) { + this.labelOperator = labelOperator; + this.updatedProperties.add("labelOperator"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("key", this.key); + jsonWriter.writeStringField("labelOperator", + this.labelOperator == null ? null : this.labelOperator.toString()); + jsonWriter.writeNumberField("expiresAfterSeconds", this.expiresAfterSeconds); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("key")) { + if (this.key == null) { + jsonWriter.writeNullField("key"); + } else { + jsonWriter.writeStringField("key", this.key); + } + } + if (updatedProperties.contains("labelOperator")) { + if (this.labelOperator == null) { + jsonWriter.writeNullField("labelOperator"); + } else { + jsonWriter.writeStringField("labelOperator", + this.labelOperator == null ? null : this.labelOperator.toString()); + } + } + if (updatedProperties.contains("expiresAfterSeconds")) { + if (this.expiresAfterSeconds == null) { + jsonWriter.writeNullField("expiresAfterSeconds"); + } else { + jsonWriter.writeNumberField("expiresAfterSeconds", this.expiresAfterSeconds); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of PassThroughWorkerSelectorAttachmentInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of PassThroughWorkerSelectorAttachmentInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the PassThroughWorkerSelectorAttachmentInternal. + */ + @Generated + public static PassThroughWorkerSelectorAttachmentInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + PassThroughWorkerSelectorAttachmentInternal deserializedPassThroughWorkerSelectorAttachmentInternal + = new PassThroughWorkerSelectorAttachmentInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedPassThroughWorkerSelectorAttachmentInternal + .setKind(WorkerSelectorAttachmentKind.fromString(reader.getString())); + } else if ("key".equals(fieldName)) { + deserializedPassThroughWorkerSelectorAttachmentInternal.key = reader.getString(); + } else if ("labelOperator".equals(fieldName)) { + deserializedPassThroughWorkerSelectorAttachmentInternal.labelOperator + = LabelOperator.fromString(reader.getString()); + } else if ("expiresAfterSeconds".equals(fieldName)) { + deserializedPassThroughWorkerSelectorAttachmentInternal.expiresAfterSeconds + = reader.getNullable(JsonReader::getDouble); + } else { + reader.skipChildren(); + } + } + return deserializedPassThroughWorkerSelectorAttachmentInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueAndMatchModeInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueAndMatchModeInternal.java index 8f71ae9e1cde..4a8e92043a4d 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueAndMatchModeInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueAndMatchModeInternal.java @@ -3,16 +3,20 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.JobMatchingModeKind; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Describes a matching mode where matching worker to a job is automatically started after job is queued successfully. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("queueAndMatch") @Immutable public final class QueueAndMatchModeInternal extends JobMatchingModeInternal { @@ -21,5 +25,79 @@ public final class QueueAndMatchModeInternal extends JobMatchingModeInternal { */ @Generated public QueueAndMatchModeInternal() { + setKind(JobMatchingModeKind.QUEUE_AND_MATCH); + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setQueueAndMatchModeInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of QueueAndMatchModeInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of QueueAndMatchModeInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the QueueAndMatchModeInternal. + */ + @Generated + public static QueueAndMatchModeInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + QueueAndMatchModeInternal deserializedQueueAndMatchModeInternal = new QueueAndMatchModeInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedQueueAndMatchModeInternal.setKind(JobMatchingModeKind.fromString(reader.getString())); + } else { + reader.skipChildren(); + } + } + return deserializedQueueAndMatchModeInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueLengthExceptionTriggerInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueLengthExceptionTriggerInternal.java index 9493da70910e..272eaf5efb60 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueLengthExceptionTriggerInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueLengthExceptionTriggerInternal.java @@ -3,46 +3,136 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Trigger for an exception action on exceeding queue length. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("queueLength") -@Immutable +@Fluent public final class QueueLengthExceptionTriggerInternal extends ExceptionTriggerInternal { /* * Threshold of number of jobs ahead in the queue to for this trigger to fire. */ @Generated - @JsonProperty(value = "threshold") private int threshold; + /** + * Get the threshold property: Threshold of number of jobs ahead in the queue to for this trigger to fire. + * + * @return the threshold value. + */ + @Generated + public int getThreshold() { + return this.threshold; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setQueueLengthExceptionTriggerInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of QueueLengthExceptionTriggerInternal class. + */ + @Generated + public QueueLengthExceptionTriggerInternal() { + setKind(ExceptionTriggerKind.QUEUE_LENGTH); + } + + /** + * Set the threshold property: Threshold of number of jobs ahead in the queue to for this trigger to fire. + *

Required when create the resource.

* * @param threshold the threshold value to set. + * @return the QueueLengthExceptionTriggerInternal object itself. */ @Generated - @JsonCreator - public QueueLengthExceptionTriggerInternal(@JsonProperty(value = "threshold") int threshold) { + public QueueLengthExceptionTriggerInternal setThreshold(int threshold) { this.threshold = threshold; + this.updatedProperties.add("threshold"); + return this; } /** - * Get the threshold property: Threshold of number of jobs ahead in the queue to for this trigger to fire. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeIntField("threshold", this.threshold); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + jsonWriter.writeIntField("threshold", this.threshold); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of QueueLengthExceptionTriggerInternal from the JsonReader. * - * @return the threshold value. + * @param jsonReader The JsonReader being read. + * @return An instance of QueueLengthExceptionTriggerInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the QueueLengthExceptionTriggerInternal. */ @Generated - public int getThreshold() { - return this.threshold; + public static QueueLengthExceptionTriggerInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + QueueLengthExceptionTriggerInternal deserializedQueueLengthExceptionTriggerInternal + = new QueueLengthExceptionTriggerInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedQueueLengthExceptionTriggerInternal + .setKind(ExceptionTriggerKind.fromString(reader.getString())); + } else if ("threshold".equals(fieldName)) { + deserializedQueueLengthExceptionTriggerInternal.threshold = reader.getInt(); + } else { + reader.skipChildren(); + } + } + return deserializedQueueLengthExceptionTriggerInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueSelectorAttachmentInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueSelectorAttachmentInternal.java index 740b2c0773a4..69f1274d3486 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueSelectorAttachmentInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueSelectorAttachmentInternal.java @@ -3,34 +3,168 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.QueueSelectorAttachmentKind; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * An attachment of queue selectors to resolve a queue to a job from a classification policy. */ -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - include = JsonTypeInfo.As.PROPERTY, - property = "kind", - defaultImpl = QueueSelectorAttachmentInternal.class) -@JsonTypeName("QueueSelectorAttachmentInternal") -@JsonSubTypes({ - @JsonSubTypes.Type(name = "conditional", value = ConditionalQueueSelectorAttachmentInternal.class), - @JsonSubTypes.Type(name = "passThrough", value = PassThroughQueueSelectorAttachmentInternal.class), - @JsonSubTypes.Type(name = "ruleEngine", value = RuleEngineQueueSelectorAttachmentInternal.class), - @JsonSubTypes.Type(name = "static", value = StaticQueueSelectorAttachmentInternal.class), - @JsonSubTypes.Type(name = "weightedAllocation", value = WeightedAllocationQueueSelectorAttachmentInternal.class) }) @Immutable -public class QueueSelectorAttachmentInternal { +public class QueueSelectorAttachmentInternal implements JsonSerializable { /** * Creates an instance of QueueSelectorAttachmentInternal class. */ @Generated public QueueSelectorAttachmentInternal() { + this.kind = QueueSelectorAttachmentKind.fromString("QueueSelectorAttachmentInternal"); + } + + /* + * The type discriminator describing a sub-type of QueueSelectorAttachment. + */ + @Generated + private QueueSelectorAttachmentKind kind; + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setQueueSelectorAttachmentInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Get the kind property: The type discriminator describing a sub-type of QueueSelectorAttachment. + * + * @return the kind value. + */ + @Generated + public QueueSelectorAttachmentKind getKind() { + return this.kind; + } + + /** + * Set the kind property: The type discriminator describing a sub-type of QueueSelectorAttachment. + * + * @param kind the kind value to set. + * @return the QueueSelectorAttachmentInternal object itself. + */ + @Generated + QueueSelectorAttachmentInternal setKind(QueueSelectorAttachmentKind kind) { + this.kind = kind; + this.updatedProperties.add("kind"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (this.kind == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of QueueSelectorAttachmentInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of QueueSelectorAttachmentInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the QueueSelectorAttachmentInternal. + */ + @Generated + public static QueueSelectorAttachmentInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("conditional".equals(discriminatorValue)) { + return ConditionalQueueSelectorAttachmentInternal.fromJson(readerToUse.reset()); + } else if ("passThrough".equals(discriminatorValue)) { + return PassThroughQueueSelectorAttachmentInternal.fromJson(readerToUse.reset()); + } else if ("ruleEngine".equals(discriminatorValue)) { + return RuleEngineQueueSelectorAttachmentInternal.fromJson(readerToUse.reset()); + } else if ("static".equals(discriminatorValue)) { + return StaticQueueSelectorAttachmentInternal.fromJson(readerToUse.reset()); + } else if ("weightedAllocation".equals(discriminatorValue)) { + return WeightedAllocationQueueSelectorAttachmentInternal.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static QueueSelectorAttachmentInternal fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + QueueSelectorAttachmentInternal deserializedQueueSelectorAttachmentInternal + = new QueueSelectorAttachmentInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedQueueSelectorAttachmentInternal.kind + = QueueSelectorAttachmentKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedQueueSelectorAttachmentInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueWeightedAllocationInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueWeightedAllocationInternal.java index 66c5aa43fd45..8545a3aaa17b 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueWeightedAllocationInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/QueueWeightedAllocationInternal.java @@ -3,64 +3,170 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Contains the weight percentage and queue selectors to be applied if selected for weighted distributions. */ -@Immutable -public final class QueueWeightedAllocationInternal { +@Fluent +public final class QueueWeightedAllocationInternal implements JsonSerializable { /* * The percentage of this weight, expressed as a fraction of 1. */ @Generated - @JsonProperty(value = "weight") private double weight; /* * A collection of queue selectors that will be applied if this allocation is selected. */ @Generated - @JsonProperty(value = "queueSelectors") private List queueSelectors; + /** + * Get the weight property: The percentage of this weight, expressed as a fraction of 1. + * + * @return the weight value. + */ + @Generated + public double getWeight() { + return this.weight; + } + + /** + * Get the queueSelectors property: A collection of queue selectors that will be applied if this allocation is selected. + * + * @return the queueSelectors value. + */ + @Generated + public List getQueueSelectors() { + return this.queueSelectors; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setQueueWeightedAllocationInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of QueueWeightedAllocationInternal class. + */ + @Generated + public QueueWeightedAllocationInternal() { + } + + /** + * Set the weight property: The percentage of this weight, expressed as a fraction of 1. + *

Required when create the resource.

* * @param weight the weight value to set. - * @param queueSelectors the queueSelectors value to set. + * @return the QueueWeightedAllocationInternal object itself. */ @Generated - @JsonCreator - public QueueWeightedAllocationInternal(@JsonProperty(value = "weight") double weight, - @JsonProperty(value = "queueSelectors") List queueSelectors) { + public QueueWeightedAllocationInternal setWeight(double weight) { this.weight = weight; - this.queueSelectors = queueSelectors; + this.updatedProperties.add("weight"); + return this; } /** - * Get the weight property: The percentage of this weight, expressed as a fraction of 1. + * Set the queueSelectors property: A collection of queue selectors that will be applied if this allocation is selected. + *

Required when create the resource.

* - * @return the weight value. + * @param queueSelectors the queueSelectors value to set. + * @return the QueueWeightedAllocationInternal object itself. */ @Generated - public double getWeight() { - return this.weight; + public QueueWeightedAllocationInternal setQueueSelectors(List queueSelectors) { + this.queueSelectors = queueSelectors; + this.updatedProperties.add("queueSelectors"); + return this; } /** - * Get the queueSelectors property: A collection of queue selectors that will be applied if this allocation is - * selected. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeDoubleField("weight", this.weight); + jsonWriter.writeArrayField("queueSelectors", this.queueSelectors, + (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeDoubleField("weight", this.weight); + if (updatedProperties.contains("queueSelectors")) { + if (this.queueSelectors == null) { + jsonWriter.writeNullField("queueSelectors"); + } else { + jsonWriter.writeArrayField("queueSelectors", this.queueSelectors, + (writer, element) -> writer.writeJson(element)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of QueueWeightedAllocationInternal from the JsonReader. * - * @return the queueSelectors value. + * @param jsonReader The JsonReader being read. + * @return An instance of QueueWeightedAllocationInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the QueueWeightedAllocationInternal. */ @Generated - public List getQueueSelectors() { - return this.queueSelectors; + public static QueueWeightedAllocationInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + QueueWeightedAllocationInternal deserializedQueueWeightedAllocationInternal + = new QueueWeightedAllocationInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("weight".equals(fieldName)) { + deserializedQueueWeightedAllocationInternal.weight = reader.getDouble(); + } else if ("queueSelectors".equals(fieldName)) { + List queueSelectors + = reader.readArray(reader1 -> RouterQueueSelectorInternal.fromJson(reader1)); + deserializedQueueWeightedAllocationInternal.queueSelectors = queueSelectors; + } else { + reader.skipChildren(); + } + } + return deserializedQueueWeightedAllocationInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ReclassifyExceptionActionInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ReclassifyExceptionActionInternal.java index d4e9ea103903..fd0a377f255c 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ReclassifyExceptionActionInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ReclassifyExceptionActionInternal.java @@ -3,18 +3,20 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; import java.util.Map; +import java.util.Set; /** * An action that modifies labels on a job and then reclassifies it. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("reclassify") @Fluent public final class ReclassifyExceptionActionInternal extends ExceptionActionInternal { @@ -22,15 +24,12 @@ public final class ReclassifyExceptionActionInternal extends ExceptionActionInte * The new classification policy that will determine queue, priority and worker selectors. */ @Generated - @JsonProperty(value = "classificationPolicyId") private String classificationPolicyId; /* - * Dictionary containing the labels to update (or add if not existing) in key-value pairs. Values must be - * primitive values - number, string, boolean. + * Dictionary containing the labels to update (or add if not existing) in key-value pairs. Values must be primitive values - number, string, boolean. */ @Generated - @JsonProperty(value = "labelsToUpsert") private Map labelsToUpsert; /** @@ -38,11 +37,11 @@ public final class ReclassifyExceptionActionInternal extends ExceptionActionInte */ @Generated public ReclassifyExceptionActionInternal() { + setKind(ExceptionActionKind.RECLASSIFY); } /** - * Get the classificationPolicyId property: The new classification policy that will determine queue, priority and - * worker selectors. + * Get the classificationPolicyId property: The new classification policy that will determine queue, priority and worker selectors. * * @return the classificationPolicyId value. */ @@ -52,8 +51,7 @@ public String getClassificationPolicyId() { } /** - * Set the classificationPolicyId property: The new classification policy that will determine queue, priority and - * worker selectors. + * Set the classificationPolicyId property: The new classification policy that will determine queue, priority and worker selectors. * * @param classificationPolicyId the classificationPolicyId value to set. * @return the ReclassifyExceptionActionInternal object itself. @@ -61,12 +59,12 @@ public String getClassificationPolicyId() { @Generated public ReclassifyExceptionActionInternal setClassificationPolicyId(String classificationPolicyId) { this.classificationPolicyId = classificationPolicyId; + this.updatedProperties.add("classificationPolicyId"); return this; } /** - * Get the labelsToUpsert property: Dictionary containing the labels to update (or add if not existing) in - * key-value pairs. Values must be primitive values - number, string, boolean. + * Get the labelsToUpsert property: Dictionary containing the labels to update (or add if not existing) in key-value pairs. Values must be primitive values - number, string, boolean. * * @return the labelsToUpsert value. */ @@ -76,8 +74,7 @@ public Map getLabelsToUpsert() { } /** - * Set the labelsToUpsert property: Dictionary containing the labels to update (or add if not existing) in - * key-value pairs. Values must be primitive values - number, string, boolean. + * Set the labelsToUpsert property: Dictionary containing the labels to update (or add if not existing) in key-value pairs. Values must be primitive values - number, string, boolean. * * @param labelsToUpsert the labelsToUpsert value to set. * @return the ReclassifyExceptionActionInternal object itself. @@ -85,6 +82,7 @@ public Map getLabelsToUpsert() { @Generated public ReclassifyExceptionActionInternal setLabelsToUpsert(Map labelsToUpsert) { this.labelsToUpsert = labelsToUpsert; + this.updatedProperties.add("labelsToUpsert"); return this; } @@ -95,6 +93,115 @@ public ReclassifyExceptionActionInternal setLabelsToUpsert(Map l @Override public ReclassifyExceptionActionInternal setId(String id) { super.setId(id); + this.updatedProperties.add("id"); return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setReclassifyExceptionActionInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("id", getId()); + jsonWriter.writeStringField("classificationPolicyId", this.classificationPolicyId); + jsonWriter.writeMapField("labelsToUpsert", this.labelsToUpsert, + (writer, element) -> writer.writeUntyped(element)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("id")) { + if (getId() == null) { + jsonWriter.writeNullField("id"); + } else { + jsonWriter.writeStringField("id", getId()); + } + } + if (updatedProperties.contains("classificationPolicyId")) { + if (this.classificationPolicyId == null) { + jsonWriter.writeNullField("classificationPolicyId"); + } else { + jsonWriter.writeStringField("classificationPolicyId", this.classificationPolicyId); + } + } + if (updatedProperties.contains("labelsToUpsert")) { + if (this.labelsToUpsert == null) { + jsonWriter.writeNullField("labelsToUpsert"); + } else { + jsonWriter.writeMapField("labelsToUpsert", this.labelsToUpsert, + (writer, element) -> writer.writeUntyped(element)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ReclassifyExceptionActionInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ReclassifyExceptionActionInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ReclassifyExceptionActionInternal. + */ + @Generated + public static ReclassifyExceptionActionInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ReclassifyExceptionActionInternal deserializedReclassifyExceptionActionInternal + = new ReclassifyExceptionActionInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedReclassifyExceptionActionInternal + .setKind(ExceptionActionKind.fromString(reader.getString())); + } else if ("id".equals(fieldName)) { + deserializedReclassifyExceptionActionInternal.setId(reader.getString()); + } else if ("classificationPolicyId".equals(fieldName)) { + deserializedReclassifyExceptionActionInternal.classificationPolicyId = reader.getString(); + } else if ("labelsToUpsert".equals(fieldName)) { + Map labelsToUpsert = reader.readMap(reader1 -> reader1.readUntyped()); + deserializedReclassifyExceptionActionInternal.labelsToUpsert = labelsToUpsert; + } else { + reader.skipChildren(); + } + } + return deserializedReclassifyExceptionActionInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ReclassifyJobOptionsInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ReclassifyJobOptionsInternal.java index b6f111f16715..22282f09f092 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ReclassifyJobOptionsInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ReclassifyJobOptionsInternal.java @@ -5,12 +5,17 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * Request payload for reclassifying jobs. */ @Immutable -public final class ReclassifyJobOptionsInternal { +public final class ReclassifyJobOptionsInternal implements JsonSerializable { /** * Creates an instance of ReclassifyJobOptionsInternal class. @@ -18,4 +23,34 @@ public final class ReclassifyJobOptionsInternal { @Generated public ReclassifyJobOptionsInternal() { } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ReclassifyJobOptionsInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ReclassifyJobOptionsInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ReclassifyJobOptionsInternal. + */ + @Generated + public static ReclassifyJobOptionsInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ReclassifyJobOptionsInternal deserializedReclassifyJobOptionsInternal = new ReclassifyJobOptionsInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + reader.skipChildren(); + } + return deserializedReclassifyJobOptionsInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ReclassifyJobResultInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ReclassifyJobResultInternal.java index 9145fad3b715..9a257ee03f61 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ReclassifyJobResultInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ReclassifyJobResultInternal.java @@ -5,12 +5,17 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * Response payload from reclassifying a job. */ @Immutable -public final class ReclassifyJobResultInternal { +public final class ReclassifyJobResultInternal implements JsonSerializable { /** * Creates an instance of ReclassifyJobResultInternal class. @@ -18,4 +23,34 @@ public final class ReclassifyJobResultInternal { @Generated private ReclassifyJobResultInternal() { } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ReclassifyJobResultInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ReclassifyJobResultInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ReclassifyJobResultInternal. + */ + @Generated + public static ReclassifyJobResultInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ReclassifyJobResultInternal deserializedReclassifyJobResultInternal = new ReclassifyJobResultInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + reader.skipChildren(); + } + return deserializedReclassifyJobResultInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RoundRobinModeInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RoundRobinModeInternal.java index 8f7ce8e1b9cc..b40bc0885733 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RoundRobinModeInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RoundRobinModeInternal.java @@ -3,16 +3,20 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.DistributionModeKind; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Jobs are distributed in order to workers, starting with the worker that is after the last worker to receive a job. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("roundRobin") @Fluent public final class RoundRobinModeInternal extends DistributionModeInternal { @@ -21,6 +25,7 @@ public final class RoundRobinModeInternal extends DistributionModeInternal { */ @Generated public RoundRobinModeInternal() { + setKind(DistributionModeKind.ROUND_ROBIN); } /** @@ -30,6 +35,7 @@ public RoundRobinModeInternal() { @Override public RoundRobinModeInternal setMinConcurrentOffers(Integer minConcurrentOffers) { super.setMinConcurrentOffers(minConcurrentOffers); + this.updatedProperties.add("minConcurrentOffers"); return this; } @@ -40,6 +46,7 @@ public RoundRobinModeInternal setMinConcurrentOffers(Integer minConcurrentOffers @Override public RoundRobinModeInternal setMaxConcurrentOffers(Integer maxConcurrentOffers) { super.setMaxConcurrentOffers(maxConcurrentOffers); + this.updatedProperties.add("maxConcurrentOffers"); return this; } @@ -50,6 +57,110 @@ public RoundRobinModeInternal setMaxConcurrentOffers(Integer maxConcurrentOffers @Override public RoundRobinModeInternal setBypassSelectors(Boolean bypassSelectors) { super.setBypassSelectors(bypassSelectors); + this.updatedProperties.add("bypassSelectors"); return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRoundRobinModeInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeNumberField("minConcurrentOffers", getMinConcurrentOffers()); + jsonWriter.writeNumberField("maxConcurrentOffers", getMaxConcurrentOffers()); + jsonWriter.writeBooleanField("bypassSelectors", isBypassSelectors()); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("minConcurrentOffers")) { + if (getMinConcurrentOffers() == null) { + jsonWriter.writeNullField("minConcurrentOffers"); + } else { + jsonWriter.writeNumberField("minConcurrentOffers", getMinConcurrentOffers()); + } + } + if (updatedProperties.contains("maxConcurrentOffers")) { + if (getMaxConcurrentOffers() == null) { + jsonWriter.writeNullField("maxConcurrentOffers"); + } else { + jsonWriter.writeNumberField("maxConcurrentOffers", getMaxConcurrentOffers()); + } + } + if (updatedProperties.contains("bypassSelectors")) { + if (isBypassSelectors() == null) { + jsonWriter.writeNullField("bypassSelectors"); + } else { + jsonWriter.writeBooleanField("bypassSelectors", isBypassSelectors()); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RoundRobinModeInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RoundRobinModeInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RoundRobinModeInternal. + */ + @Generated + public static RoundRobinModeInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RoundRobinModeInternal deserializedRoundRobinModeInternal = new RoundRobinModeInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedRoundRobinModeInternal.setKind(DistributionModeKind.fromString(reader.getString())); + } else if ("minConcurrentOffers".equals(fieldName)) { + deserializedRoundRobinModeInternal.setMinConcurrentOffers(reader.getNullable(JsonReader::getInt)); + } else if ("maxConcurrentOffers".equals(fieldName)) { + deserializedRoundRobinModeInternal.setMaxConcurrentOffers(reader.getNullable(JsonReader::getInt)); + } else if ("bypassSelectors".equals(fieldName)) { + deserializedRoundRobinModeInternal.setBypassSelectors(reader.getNullable(JsonReader::getBoolean)); + } else { + reader.skipChildren(); + } + } + return deserializedRoundRobinModeInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterJobInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterJobInternal.java index ba6fbadf6d93..d67938d73d22 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterJobInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterJobInternal.java @@ -3,149 +3,135 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.communication.jobrouter.models.RouterJobAssignment; import com.azure.communication.jobrouter.models.RouterJobNote; import com.azure.communication.jobrouter.models.RouterJobStatus; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.time.OffsetDateTime; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * A unit of work to be routed. */ @Fluent -public final class RouterJobInternal { +public final class RouterJobInternal implements JsonSerializable { /* * The entity tag for this resource. */ @Generated - @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY) private String etag; /* * Id of a job. */ @Generated - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) private String id; /* * Reference to an external parent context, eg. call ID. */ @Generated - @JsonProperty(value = "channelReference") private String channelReference; /* * The status of the job. */ @Generated - @JsonProperty(value = "status", access = JsonProperty.Access.WRITE_ONLY) private RouterJobStatus status; /* * Timestamp a job was queued in UTC. */ @Generated - @JsonProperty(value = "enqueuedAt", access = JsonProperty.Access.WRITE_ONLY) private OffsetDateTime enqueuedAt; /* * The channel identifier. eg. voice, chat, etc. */ @Generated - @JsonProperty(value = "channelId") private String channelId; /* * Id of a classification policy used for classifying this job. */ @Generated - @JsonProperty(value = "classificationPolicyId") private String classificationPolicyId; /* * Id of a queue that this job is queued to. */ @Generated - @JsonProperty(value = "queueId") private String queueId; /* * Priority of this job. */ @Generated - @JsonProperty(value = "priority") private Integer priority; /* * Reason code for cancelled or closed jobs. */ @Generated - @JsonProperty(value = "dispositionCode") private String dispositionCode; /* * A collection of manually specified worker selectors, which a worker must satisfy in order to process this job. */ @Generated - @JsonProperty(value = "requestedWorkerSelectors") private List requestedWorkerSelectors; /* - * A collection of worker selectors attached by a classification policy, which a worker must satisfy in order to - * process this job. + * A collection of worker selectors attached by a classification policy, which a worker must satisfy in order to process this job. */ @Generated - @JsonProperty(value = "attachedWorkerSelectors", access = JsonProperty.Access.WRITE_ONLY) private List attachedWorkerSelectors; /* - * A set of key/value pairs that are identifying attributes used by the rules engines to make decisions. Values - * must be primitive values - number, string, boolean. + * A set of key/value pairs that are identifying attributes used by the rules engines to make decisions. Values must be primitive values - number, string, boolean. */ @Generated - @JsonProperty(value = "labels") private Map labels; /* * A collection of the assignments of the job. Key is AssignmentId. */ @Generated - @JsonProperty(value = "assignments", access = JsonProperty.Access.WRITE_ONLY) private Map assignments; /* - * A set of non-identifying attributes attached to this job. Values must be primitive values - number, string, - * boolean. + * A set of non-identifying attributes attached to this job. Values must be primitive values - number, string, boolean. */ @Generated - @JsonProperty(value = "tags") private Map tags; /* * Notes attached to a job, sorted by timestamp. */ @Generated - @JsonProperty(value = "notes") private List notes; /* * If set, job will be scheduled to be enqueued at a given time. */ @Generated - @JsonProperty(value = "scheduledAt", access = JsonProperty.Access.WRITE_ONLY) private OffsetDateTime scheduledAt; /* * If provided, will determine how job matching will be carried out. Default mode: QueueAndMatchMode. */ @Generated - @JsonProperty(value = "matchingMode") private JobMatchingModeInternal matchingMode; /** @@ -194,6 +180,7 @@ public String getChannelReference() { @Generated public RouterJobInternal setChannelReference(String channelReference) { this.channelReference = channelReference; + this.updatedProperties.add("channelReference"); return this; } @@ -236,6 +223,7 @@ public String getChannelId() { @Generated public RouterJobInternal setChannelId(String channelId) { this.channelId = channelId; + this.updatedProperties.add("channelId"); return this; } @@ -258,6 +246,7 @@ public String getClassificationPolicyId() { @Generated public RouterJobInternal setClassificationPolicyId(String classificationPolicyId) { this.classificationPolicyId = classificationPolicyId; + this.updatedProperties.add("classificationPolicyId"); return this; } @@ -280,6 +269,7 @@ public String getQueueId() { @Generated public RouterJobInternal setQueueId(String queueId) { this.queueId = queueId; + this.updatedProperties.add("queueId"); return this; } @@ -302,6 +292,7 @@ public Integer getPriority() { @Generated public RouterJobInternal setPriority(Integer priority) { this.priority = priority; + this.updatedProperties.add("priority"); return this; } @@ -324,12 +315,12 @@ public String getDispositionCode() { @Generated public RouterJobInternal setDispositionCode(String dispositionCode) { this.dispositionCode = dispositionCode; + this.updatedProperties.add("dispositionCode"); return this; } /** - * Get the requestedWorkerSelectors property: A collection of manually specified worker selectors, which a worker - * must satisfy in order to process this job. + * Get the requestedWorkerSelectors property: A collection of manually specified worker selectors, which a worker must satisfy in order to process this job. * * @return the requestedWorkerSelectors value. */ @@ -339,8 +330,7 @@ public List getRequestedWorkerSelectors() { } /** - * Set the requestedWorkerSelectors property: A collection of manually specified worker selectors, which a worker - * must satisfy in order to process this job. + * Set the requestedWorkerSelectors property: A collection of manually specified worker selectors, which a worker must satisfy in order to process this job. * * @param requestedWorkerSelectors the requestedWorkerSelectors value to set. * @return the RouterJobInternal object itself. @@ -348,12 +338,12 @@ public List getRequestedWorkerSelectors() { @Generated public RouterJobInternal setRequestedWorkerSelectors(List requestedWorkerSelectors) { this.requestedWorkerSelectors = requestedWorkerSelectors; + this.updatedProperties.add("requestedWorkerSelectors"); return this; } /** - * Get the attachedWorkerSelectors property: A collection of worker selectors attached by a classification policy, - * which a worker must satisfy in order to process this job. + * Get the attachedWorkerSelectors property: A collection of worker selectors attached by a classification policy, which a worker must satisfy in order to process this job. * * @return the attachedWorkerSelectors value. */ @@ -363,8 +353,7 @@ public List getAttachedWorkerSelectors() { } /** - * Get the labels property: A set of key/value pairs that are identifying attributes used by the rules engines to - * make decisions. Values must be primitive values - number, string, boolean. + * Get the labels property: A set of key/value pairs that are identifying attributes used by the rules engines to make decisions. Values must be primitive values - number, string, boolean. * * @return the labels value. */ @@ -374,8 +363,7 @@ public Map getLabels() { } /** - * Set the labels property: A set of key/value pairs that are identifying attributes used by the rules engines to - * make decisions. Values must be primitive values - number, string, boolean. + * Set the labels property: A set of key/value pairs that are identifying attributes used by the rules engines to make decisions. Values must be primitive values - number, string, boolean. * * @param labels the labels value to set. * @return the RouterJobInternal object itself. @@ -383,6 +371,7 @@ public Map getLabels() { @Generated public RouterJobInternal setLabels(Map labels) { this.labels = labels; + this.updatedProperties.add("labels"); return this; } @@ -397,8 +386,7 @@ public Map getAssignments() { } /** - * Get the tags property: A set of non-identifying attributes attached to this job. Values must be primitive values - * - number, string, boolean. + * Get the tags property: A set of non-identifying attributes attached to this job. Values must be primitive values - number, string, boolean. * * @return the tags value. */ @@ -408,8 +396,7 @@ public Map getTags() { } /** - * Set the tags property: A set of non-identifying attributes attached to this job. Values must be primitive values - * - number, string, boolean. + * Set the tags property: A set of non-identifying attributes attached to this job. Values must be primitive values - number, string, boolean. * * @param tags the tags value to set. * @return the RouterJobInternal object itself. @@ -417,6 +404,7 @@ public Map getTags() { @Generated public RouterJobInternal setTags(Map tags) { this.tags = tags; + this.updatedProperties.add("tags"); return this; } @@ -439,6 +427,7 @@ public List getNotes() { @Generated public RouterJobInternal setNotes(List notes) { this.notes = notes; + this.updatedProperties.add("notes"); return this; } @@ -453,8 +442,7 @@ public OffsetDateTime getScheduledAt() { } /** - * Get the matchingMode property: If provided, will determine how job matching will be carried out. Default mode: - * QueueAndMatchMode. + * Get the matchingMode property: If provided, will determine how job matching will be carried out. Default mode: QueueAndMatchMode. * * @return the matchingMode value. */ @@ -464,8 +452,7 @@ public JobMatchingModeInternal getMatchingMode() { } /** - * Set the matchingMode property: If provided, will determine how job matching will be carried out. Default mode: - * QueueAndMatchMode. + * Set the matchingMode property: If provided, will determine how job matching will be carried out. Default mode: QueueAndMatchMode. * * @param matchingMode the matchingMode value to set. * @return the RouterJobInternal object itself. @@ -473,6 +460,7 @@ public JobMatchingModeInternal getMatchingMode() { @Generated public RouterJobInternal setMatchingMode(JobMatchingModeInternal matchingMode) { this.matchingMode = matchingMode; + this.updatedProperties.add("matchingMode"); return this; } @@ -552,4 +540,234 @@ public RouterJobInternal setScheduledAt(OffsetDateTime scheduledAt) { this.scheduledAt = scheduledAt; return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRouterJobInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("channelReference", this.channelReference); + jsonWriter.writeStringField("channelId", this.channelId); + jsonWriter.writeStringField("classificationPolicyId", this.classificationPolicyId); + jsonWriter.writeStringField("queueId", this.queueId); + jsonWriter.writeNumberField("priority", this.priority); + jsonWriter.writeStringField("dispositionCode", this.dispositionCode); + jsonWriter.writeArrayField("requestedWorkerSelectors", this.requestedWorkerSelectors, + (writer, element) -> writer.writeJson(element)); + jsonWriter.writeMapField("labels", this.labels, (writer, element) -> writer.writeUntyped(element)); + jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeUntyped(element)); + jsonWriter.writeArrayField("notes", this.notes, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeJsonField("matchingMode", this.matchingMode); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("channelReference")) { + if (this.channelReference == null) { + jsonWriter.writeNullField("channelReference"); + } else { + jsonWriter.writeStringField("channelReference", this.channelReference); + } + } + if (updatedProperties.contains("channelId")) { + if (this.channelId == null) { + jsonWriter.writeNullField("channelId"); + } else { + jsonWriter.writeStringField("channelId", this.channelId); + } + } + if (updatedProperties.contains("classificationPolicyId")) { + if (this.classificationPolicyId == null) { + jsonWriter.writeNullField("classificationPolicyId"); + } else { + jsonWriter.writeStringField("classificationPolicyId", this.classificationPolicyId); + } + } + if (updatedProperties.contains("queueId")) { + if (this.queueId == null) { + jsonWriter.writeNullField("queueId"); + } else { + jsonWriter.writeStringField("queueId", this.queueId); + } + } + if (updatedProperties.contains("priority")) { + if (this.priority == null) { + jsonWriter.writeNullField("priority"); + } else { + jsonWriter.writeNumberField("priority", this.priority); + } + } + if (updatedProperties.contains("dispositionCode")) { + if (this.dispositionCode == null) { + jsonWriter.writeNullField("dispositionCode"); + } else { + jsonWriter.writeStringField("dispositionCode", this.dispositionCode); + } + } + if (updatedProperties.contains("requestedWorkerSelectors")) { + if (this.requestedWorkerSelectors == null) { + jsonWriter.writeNullField("requestedWorkerSelectors"); + } else { + jsonWriter.writeArrayField("requestedWorkerSelectors", this.requestedWorkerSelectors, + (writer, element) -> writer.writeJson(element)); + } + } + if (updatedProperties.contains("labels")) { + if (this.labels == null) { + jsonWriter.writeNullField("labels"); + } else { + jsonWriter.writeMapField("labels", this.labels, (writer, element) -> writer.writeUntyped(element)); + } + } + if (updatedProperties.contains("tags")) { + if (this.tags == null) { + jsonWriter.writeNullField("tags"); + } else { + jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeUntyped(element)); + } + } + if (updatedProperties.contains("notes")) { + if (this.notes == null) { + jsonWriter.writeNullField("notes"); + } else { + jsonWriter.writeArrayField("notes", this.notes, (writer, element) -> writer.writeJson(element)); + } + } + if (updatedProperties.contains("matchingMode")) { + if (this.matchingMode == null) { + jsonWriter.writeNullField("matchingMode"); + } else { + this.matchingMode.serializeAsJsonMergePatch(true); + jsonWriter.writeJsonField("matchingMode", this.matchingMode); + this.matchingMode.serializeAsJsonMergePatch(false); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterJobInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RouterJobInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RouterJobInternal. + */ + @Generated + public static RouterJobInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String etag = null; + String id = null; + String channelReference = null; + RouterJobStatus status = null; + OffsetDateTime enqueuedAt = null; + String channelId = null; + String classificationPolicyId = null; + String queueId = null; + Integer priority = null; + String dispositionCode = null; + List requestedWorkerSelectors = null; + List attachedWorkerSelectors = null; + Map labels = null; + Map assignments = null; + Map tags = null; + List notes = null; + OffsetDateTime scheduledAt = null; + JobMatchingModeInternal matchingMode = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("etag".equals(fieldName)) { + etag = reader.getString(); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("channelReference".equals(fieldName)) { + channelReference = reader.getString(); + } else if ("status".equals(fieldName)) { + status = RouterJobStatus.fromString(reader.getString()); + } else if ("enqueuedAt".equals(fieldName)) { + enqueuedAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())); + } else if ("channelId".equals(fieldName)) { + channelId = reader.getString(); + } else if ("classificationPolicyId".equals(fieldName)) { + classificationPolicyId = reader.getString(); + } else if ("queueId".equals(fieldName)) { + queueId = reader.getString(); + } else if ("priority".equals(fieldName)) { + priority = reader.getNullable(JsonReader::getInt); + } else if ("dispositionCode".equals(fieldName)) { + dispositionCode = reader.getString(); + } else if ("requestedWorkerSelectors".equals(fieldName)) { + requestedWorkerSelectors + = reader.readArray(reader1 -> RouterWorkerSelectorInternal.fromJson(reader1)); + } else if ("attachedWorkerSelectors".equals(fieldName)) { + attachedWorkerSelectors + = reader.readArray(reader1 -> RouterWorkerSelectorInternal.fromJson(reader1)); + } else if ("labels".equals(fieldName)) { + labels = reader.readMap(reader1 -> reader1.readUntyped()); + } else if ("assignments".equals(fieldName)) { + assignments = reader.readMap(reader1 -> RouterJobAssignment.fromJson(reader1)); + } else if ("tags".equals(fieldName)) { + tags = reader.readMap(reader1 -> reader1.readUntyped()); + } else if ("notes".equals(fieldName)) { + notes = reader.readArray(reader1 -> RouterJobNote.fromJson(reader1)); + } else if ("scheduledAt".equals(fieldName)) { + scheduledAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())); + } else if ("matchingMode".equals(fieldName)) { + matchingMode = JobMatchingModeInternal.fromJson(reader); + } else { + reader.skipChildren(); + } + } + RouterJobInternal deserializedRouterJobInternal = new RouterJobInternal(); + deserializedRouterJobInternal.etag = etag; + deserializedRouterJobInternal.id = id; + deserializedRouterJobInternal.channelReference = channelReference; + deserializedRouterJobInternal.status = status; + deserializedRouterJobInternal.enqueuedAt = enqueuedAt; + deserializedRouterJobInternal.channelId = channelId; + deserializedRouterJobInternal.classificationPolicyId = classificationPolicyId; + deserializedRouterJobInternal.queueId = queueId; + deserializedRouterJobInternal.priority = priority; + deserializedRouterJobInternal.dispositionCode = dispositionCode; + deserializedRouterJobInternal.requestedWorkerSelectors = requestedWorkerSelectors; + deserializedRouterJobInternal.attachedWorkerSelectors = attachedWorkerSelectors; + deserializedRouterJobInternal.labels = labels; + deserializedRouterJobInternal.assignments = assignments; + deserializedRouterJobInternal.tags = tags; + deserializedRouterJobInternal.notes = notes; + deserializedRouterJobInternal.scheduledAt = scheduledAt; + deserializedRouterJobInternal.matchingMode = matchingMode; + return deserializedRouterJobInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterQueueInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterQueueInternal.java index 285a63243a05..158c6eb932d6 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterQueueInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterQueueInternal.java @@ -3,58 +3,58 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; import java.util.Map; +import java.util.Set; /** * A queue that can contain jobs to be routed. */ @Fluent -public final class RouterQueueInternal { +public final class RouterQueueInternal implements JsonSerializable { /* * The entity tag for this resource. */ @Generated - @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY) private String etag; /* * Id of a queue. */ @Generated - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) private String id; /* * Friendly name of this queue. */ @Generated - @JsonProperty(value = "name") private String name; /* * Id of a distribution policy that will determine how a job is distributed to workers. */ @Generated - @JsonProperty(value = "distributionPolicyId") private String distributionPolicyId; /* - * A set of key/value pairs that are identifying attributes used by the rules engines to make decisions. Values - * must be primitive values - number, string, boolean. + * A set of key/value pairs that are identifying attributes used by the rules engines to make decisions. Values must be primitive values - number, string, boolean. */ @Generated - @JsonProperty(value = "labels") private Map labels; /* * Id of an exception policy that determines various job escalation rules. */ @Generated - @JsonProperty(value = "exceptionPolicyId") private String exceptionPolicyId; /** @@ -119,12 +119,12 @@ public String getName() { @Generated public RouterQueueInternal setName(String name) { this.name = name; + this.updatedProperties.add("name"); return this; } /** - * Get the distributionPolicyId property: Id of a distribution policy that will determine how a job is distributed - * to workers. + * Get the distributionPolicyId property: Id of a distribution policy that will determine how a job is distributed to workers. * * @return the distributionPolicyId value. */ @@ -134,8 +134,7 @@ public String getDistributionPolicyId() { } /** - * Set the distributionPolicyId property: Id of a distribution policy that will determine how a job is distributed - * to workers. + * Set the distributionPolicyId property: Id of a distribution policy that will determine how a job is distributed to workers. * * @param distributionPolicyId the distributionPolicyId value to set. * @return the RouterQueueInternal object itself. @@ -143,12 +142,12 @@ public String getDistributionPolicyId() { @Generated public RouterQueueInternal setDistributionPolicyId(String distributionPolicyId) { this.distributionPolicyId = distributionPolicyId; + this.updatedProperties.add("distributionPolicyId"); return this; } /** - * Get the labels property: A set of key/value pairs that are identifying attributes used by the rules engines to - * make decisions. Values must be primitive values - number, string, boolean. + * Get the labels property: A set of key/value pairs that are identifying attributes used by the rules engines to make decisions. Values must be primitive values - number, string, boolean. * * @return the labels value. */ @@ -158,8 +157,7 @@ public Map getLabels() { } /** - * Set the labels property: A set of key/value pairs that are identifying attributes used by the rules engines to - * make decisions. Values must be primitive values - number, string, boolean. + * Set the labels property: A set of key/value pairs that are identifying attributes used by the rules engines to make decisions. Values must be primitive values - number, string, boolean. * * @param labels the labels value to set. * @return the RouterQueueInternal object itself. @@ -167,6 +165,7 @@ public Map getLabels() { @Generated public RouterQueueInternal setLabels(Map labels) { this.labels = labels; + this.updatedProperties.add("labels"); return this; } @@ -189,6 +188,127 @@ public String getExceptionPolicyId() { @Generated public RouterQueueInternal setExceptionPolicyId(String exceptionPolicyId) { this.exceptionPolicyId = exceptionPolicyId; + this.updatedProperties.add("exceptionPolicyId"); return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRouterQueueInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("distributionPolicyId", this.distributionPolicyId); + jsonWriter.writeMapField("labels", this.labels, (writer, element) -> writer.writeUntyped(element)); + jsonWriter.writeStringField("exceptionPolicyId", this.exceptionPolicyId); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("name")) { + if (this.name == null) { + jsonWriter.writeNullField("name"); + } else { + jsonWriter.writeStringField("name", this.name); + } + } + if (updatedProperties.contains("distributionPolicyId")) { + if (this.distributionPolicyId == null) { + jsonWriter.writeNullField("distributionPolicyId"); + } else { + jsonWriter.writeStringField("distributionPolicyId", this.distributionPolicyId); + } + } + if (updatedProperties.contains("labels")) { + if (this.labels == null) { + jsonWriter.writeNullField("labels"); + } else { + jsonWriter.writeMapField("labels", this.labels, (writer, element) -> writer.writeUntyped(element)); + } + } + if (updatedProperties.contains("exceptionPolicyId")) { + if (this.exceptionPolicyId == null) { + jsonWriter.writeNullField("exceptionPolicyId"); + } else { + jsonWriter.writeStringField("exceptionPolicyId", this.exceptionPolicyId); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterQueueInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RouterQueueInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RouterQueueInternal. + */ + @Generated + public static RouterQueueInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String etag = null; + String id = null; + String name = null; + String distributionPolicyId = null; + Map labels = null; + String exceptionPolicyId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("etag".equals(fieldName)) { + etag = reader.getString(); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("distributionPolicyId".equals(fieldName)) { + distributionPolicyId = reader.getString(); + } else if ("labels".equals(fieldName)) { + labels = reader.readMap(reader1 -> reader1.readUntyped()); + } else if ("exceptionPolicyId".equals(fieldName)) { + exceptionPolicyId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RouterQueueInternal deserializedRouterQueueInternal = new RouterQueueInternal(); + deserializedRouterQueueInternal.etag = etag; + deserializedRouterQueueInternal.id = id; + deserializedRouterQueueInternal.name = name; + deserializedRouterQueueInternal.distributionPolicyId = distributionPolicyId; + deserializedRouterQueueInternal.labels = labels; + deserializedRouterQueueInternal.exceptionPolicyId = exceptionPolicyId; + return deserializedRouterQueueInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterQueueSelectorInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterQueueSelectorInternal.java index 316fd330b259..e92f2bac47d9 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterQueueSelectorInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterQueueSelectorInternal.java @@ -3,54 +3,42 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.communication.jobrouter.models.LabelOperator; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Describes a condition that must be met against a set of labels for queue selection. */ @Fluent -public final class RouterQueueSelectorInternal { +public final class RouterQueueSelectorInternal implements JsonSerializable { /* * The label key to query against. */ @Generated - @JsonProperty(value = "key") private String key; /* * Describes how the value of the label is compared to the value defined on the label selector. */ @Generated - @JsonProperty(value = "labelOperator") private LabelOperator labelOperator; /* - * The value to compare against the actual label value with the given operator. Values must be primitive values - - * number, string, boolean. + * The value to compare against the actual label value with the given operator. Values must be primitive values - number, string, boolean. */ @Generated - @JsonProperty(value = "value") private Object value; - /** - * Creates an instance of RouterQueueSelectorInternal class. - * - * @param key the key value to set. - * @param labelOperator the labelOperator value to set. - */ - @Generated - @JsonCreator - public RouterQueueSelectorInternal(@JsonProperty(value = "key") String key, - @JsonProperty(value = "labelOperator") LabelOperator labelOperator) { - this.key = key; - this.labelOperator = labelOperator; - } - /** * Get the key property: The label key to query against. * @@ -62,8 +50,7 @@ public String getKey() { } /** - * Get the labelOperator property: Describes how the value of the label is compared to the value defined on the - * label selector. + * Get the labelOperator property: Describes how the value of the label is compared to the value defined on the label selector. * * @return the labelOperator value. */ @@ -73,8 +60,7 @@ public LabelOperator getLabelOperator() { } /** - * Get the value property: The value to compare against the actual label value with the given operator. Values must - * be primitive values - number, string, boolean. + * Get the value property: The value to compare against the actual label value with the given operator. Values must be primitive values - number, string, boolean. * * @return the value value. */ @@ -84,8 +70,7 @@ public Object getValue() { } /** - * Set the value property: The value to compare against the actual label value with the given operator. Values must - * be primitive values - number, string, boolean. + * Set the value property: The value to compare against the actual label value with the given operator. Values must be primitive values - number, string, boolean. * * @param value the value value to set. * @return the RouterQueueSelectorInternal object itself. @@ -93,6 +78,138 @@ public Object getValue() { @Generated public RouterQueueSelectorInternal setValue(Object value) { this.value = value; + this.updatedProperties.add("value"); + return this; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRouterQueueSelectorInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Creates an instance of RouterQueueSelectorInternal class. + */ + @Generated + public RouterQueueSelectorInternal() { + } + + /** + * Set the key property: The label key to query against. + *

Required when create the resource.

+ * + * @param key the key value to set. + * @return the RouterQueueSelectorInternal object itself. + */ + @Generated + public RouterQueueSelectorInternal setKey(String key) { + this.key = key; + this.updatedProperties.add("key"); return this; } + + /** + * Set the labelOperator property: Describes how the value of the label is compared to the value defined on the label selector. + *

Required when create the resource.

+ * + * @param labelOperator the labelOperator value to set. + * @return the RouterQueueSelectorInternal object itself. + */ + @Generated + public RouterQueueSelectorInternal setLabelOperator(LabelOperator labelOperator) { + this.labelOperator = labelOperator; + this.updatedProperties.add("labelOperator"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("key", this.key); + jsonWriter.writeStringField("labelOperator", + this.labelOperator == null ? null : this.labelOperator.toString()); + jsonWriter.writeUntypedField("value", this.value); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("key")) { + if (this.key == null) { + jsonWriter.writeNullField("key"); + } else { + jsonWriter.writeStringField("key", this.key); + } + } + if (updatedProperties.contains("labelOperator")) { + if (this.labelOperator == null) { + jsonWriter.writeNullField("labelOperator"); + } else { + jsonWriter.writeStringField("labelOperator", + this.labelOperator == null ? null : this.labelOperator.toString()); + } + } + if (updatedProperties.contains("value")) { + if (this.value == null) { + jsonWriter.writeNullField("value"); + } else { + jsonWriter.writeUntypedField("value", this.value); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterQueueSelectorInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RouterQueueSelectorInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RouterQueueSelectorInternal. + */ + @Generated + public static RouterQueueSelectorInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RouterQueueSelectorInternal deserializedRouterQueueSelectorInternal = new RouterQueueSelectorInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("key".equals(fieldName)) { + deserializedRouterQueueSelectorInternal.key = reader.getString(); + } else if ("labelOperator".equals(fieldName)) { + deserializedRouterQueueSelectorInternal.labelOperator + = LabelOperator.fromString(reader.getString()); + } else if ("value".equals(fieldName)) { + deserializedRouterQueueSelectorInternal.value = reader.readUntyped(); + } else { + reader.skipChildren(); + } + } + return deserializedRouterQueueSelectorInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterQueueStatisticsInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterQueueStatisticsInternal.java index e123d397a918..be64123730fd 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterQueueStatisticsInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterQueueStatisticsInternal.java @@ -5,42 +5,41 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.util.Map; /** * Statistics for the queue. */ @Immutable -public final class RouterQueueStatisticsInternal { +public final class RouterQueueStatisticsInternal implements JsonSerializable { /* * Id of the queue these details are about. */ @Generated - @JsonProperty(value = "queueId") - private String queueId; + private final String queueId; /* * Length of the queue: total number of enqueued jobs. */ @Generated - @JsonProperty(value = "length") - private int length; + private final int length; /* * The estimated wait time of this queue rounded up to the nearest minute, grouped by job priority. */ @Generated - @JsonProperty(value = "estimatedWaitTimeMinutes") private Map estimatedWaitTimeMinutes; /* * The wait time of the job that has been enqueued in this queue for the longest. */ @Generated - @JsonProperty(value = "longestJobWaitTimeMinutes") private Double longestJobWaitTimeMinutes; /** @@ -50,9 +49,7 @@ public final class RouterQueueStatisticsInternal { * @param length the length value to set. */ @Generated - @JsonCreator - private RouterQueueStatisticsInternal(@JsonProperty(value = "queueId") String queueId, - @JsonProperty(value = "length") int length) { + private RouterQueueStatisticsInternal(String queueId, int length) { this.queueId = queueId; this.length = length; } @@ -78,8 +75,7 @@ public int getLength() { } /** - * Get the estimatedWaitTimeMinutes property: The estimated wait time of this queue rounded up to the nearest - * minute, grouped by job priority. + * Get the estimatedWaitTimeMinutes property: The estimated wait time of this queue rounded up to the nearest minute, grouped by job priority. * * @return the estimatedWaitTimeMinutes value. */ @@ -89,8 +85,7 @@ public Map getEstimatedWaitTimeMinutes() { } /** - * Get the longestJobWaitTimeMinutes property: The wait time of the job that has been enqueued in this queue for - * the longest. + * Get the longestJobWaitTimeMinutes property: The wait time of the job that has been enqueued in this queue for the longest. * * @return the longestJobWaitTimeMinutes value. */ @@ -98,4 +93,57 @@ public Map getEstimatedWaitTimeMinutes() { public Double getLongestJobWaitTimeMinutes() { return this.longestJobWaitTimeMinutes; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("queueId", this.queueId); + jsonWriter.writeIntField("length", this.length); + jsonWriter.writeMapField("estimatedWaitTimeMinutes", this.estimatedWaitTimeMinutes, + (writer, element) -> writer.writeDouble(element)); + jsonWriter.writeNumberField("longestJobWaitTimeMinutes", this.longestJobWaitTimeMinutes); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterQueueStatisticsInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RouterQueueStatisticsInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RouterQueueStatisticsInternal. + */ + @Generated + public static RouterQueueStatisticsInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String queueId = null; + int length = 0; + Map estimatedWaitTimeMinutes = null; + Double longestJobWaitTimeMinutes = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("queueId".equals(fieldName)) { + queueId = reader.getString(); + } else if ("length".equals(fieldName)) { + length = reader.getInt(); + } else if ("estimatedWaitTimeMinutes".equals(fieldName)) { + estimatedWaitTimeMinutes = reader.readMap(reader1 -> reader1.getDouble()); + } else if ("longestJobWaitTimeMinutes".equals(fieldName)) { + longestJobWaitTimeMinutes = reader.getNullable(JsonReader::getDouble); + } else { + reader.skipChildren(); + } + } + RouterQueueStatisticsInternal deserializedRouterQueueStatisticsInternal + = new RouterQueueStatisticsInternal(queueId, length); + deserializedRouterQueueStatisticsInternal.estimatedWaitTimeMinutes = estimatedWaitTimeMinutes; + deserializedRouterQueueStatisticsInternal.longestJobWaitTimeMinutes = longestJobWaitTimeMinutes; + return deserializedRouterQueueStatisticsInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterRuleInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterRuleInternal.java index 063a26041e4a..4e83a49024ef 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterRuleInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterRuleInternal.java @@ -3,39 +3,171 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.RouterRuleKind; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * A rule of one of the following types: - * StaticRule: A rule providing static rules that always return the same result, regardless of input. - * DirectMapRule: A rule that return the same labels as the input labels. + * StaticRule: A rule providing static rules that always return the same result, regardless of input. + * DirectMapRule: A rule that return the same labels as the input labels. * ExpressionRule: A rule providing inline expression rules. * FunctionRule: A rule providing a binding to an HTTP Triggered Azure Function. * WebhookRule: A rule providing a binding to a webserver following OAuth2.0 authentication protocol. */ -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - include = JsonTypeInfo.As.PROPERTY, - property = "kind", - defaultImpl = RouterRuleInternal.class) -@JsonTypeName("RouterRuleInternal") -@JsonSubTypes({ - @JsonSubTypes.Type(name = "directMap", value = DirectMapRouterRuleInternal.class), - @JsonSubTypes.Type(name = "expression", value = ExpressionRouterRuleInternal.class), - @JsonSubTypes.Type(name = "function", value = FunctionRouterRuleInternal.class), - @JsonSubTypes.Type(name = "static", value = StaticRouterRuleInternal.class), - @JsonSubTypes.Type(name = "webhook", value = WebhookRouterRuleInternal.class) }) @Immutable -public class RouterRuleInternal { +public class RouterRuleInternal implements JsonSerializable { /** * Creates an instance of RouterRuleInternal class. */ @Generated public RouterRuleInternal() { + this.kind = RouterRuleKind.fromString("RouterRuleInternal"); + } + + /* + * The type discriminator describing a sub-type of RouterRule + */ + @Generated + private RouterRuleKind kind; + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRouterRuleInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Get the kind property: The type discriminator describing a sub-type of RouterRule. + * + * @return the kind value. + */ + @Generated + public RouterRuleKind getKind() { + return this.kind; + } + + /** + * Set the kind property: The type discriminator describing a sub-type of RouterRule. + * + * @param kind the kind value to set. + * @return the RouterRuleInternal object itself. + */ + @Generated + RouterRuleInternal setKind(RouterRuleKind kind) { + this.kind = kind; + this.updatedProperties.add("kind"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (this.kind == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterRuleInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RouterRuleInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RouterRuleInternal. + */ + @Generated + public static RouterRuleInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("directMap".equals(discriminatorValue)) { + return DirectMapRouterRuleInternal.fromJson(readerToUse.reset()); + } else if ("expression".equals(discriminatorValue)) { + return ExpressionRouterRuleInternal.fromJson(readerToUse.reset()); + } else if ("function".equals(discriminatorValue)) { + return FunctionRouterRuleInternal.fromJson(readerToUse.reset()); + } else if ("static".equals(discriminatorValue)) { + return StaticRouterRuleInternal.fromJson(readerToUse.reset()); + } else if ("webhook".equals(discriminatorValue)) { + return WebhookRouterRuleInternal.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static RouterRuleInternal fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RouterRuleInternal deserializedRouterRuleInternal = new RouterRuleInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedRouterRuleInternal.kind = RouterRuleKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRouterRuleInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterWorkerInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterWorkerInternal.java index b76f1a651f1a..6a241f12623c 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterWorkerInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterWorkerInternal.java @@ -3,107 +3,99 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.communication.jobrouter.models.RouterChannel; import com.azure.communication.jobrouter.models.RouterJobOffer; import com.azure.communication.jobrouter.models.RouterWorkerAssignment; import com.azure.communication.jobrouter.models.RouterWorkerState; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * An entity for jobs to be routed to. */ @Fluent -public final class RouterWorkerInternal { +public final class RouterWorkerInternal implements JsonSerializable { /* * The entity tag for this resource. */ @Generated - @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY) private String etag; /* * Id of a worker. */ @Generated - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) private String id; /* * Current state of a worker. */ @Generated - @JsonProperty(value = "state", access = JsonProperty.Access.WRITE_ONLY) private RouterWorkerState state; /* * Collection of queue(s) that this worker can receive work from. */ @Generated - @JsonProperty(value = "queues") private List queues; /* * The total capacity score this worker has to manage multiple concurrent jobs. */ @Generated - @JsonProperty(value = "capacity") private Integer capacity; /* - * A set of key/value pairs that are identifying attributes used by the rules engines to make decisions. Values - * must be primitive values - number, string, boolean. + * A set of key/value pairs that are identifying attributes used by the rules engines to make decisions. Values must be primitive values - number, string, boolean. */ @Generated - @JsonProperty(value = "labels") private Map labels; /* - * A set of non-identifying attributes attached to this worker. Values must be primitive values - number, string, - * boolean. + * A set of non-identifying attributes attached to this worker. Values must be primitive values - number, string, boolean. */ @Generated - @JsonProperty(value = "tags") private Map tags; /* * Collection of channel(s) this worker can handle and their impact on the workers capacity. */ @Generated - @JsonProperty(value = "channels") private List channels; /* * A list of active offers issued to this worker. */ @Generated - @JsonProperty(value = "offers", access = JsonProperty.Access.WRITE_ONLY) private List offers; /* * A list of assigned jobs attached to this worker. */ @Generated - @JsonProperty(value = "assignedJobs", access = JsonProperty.Access.WRITE_ONLY) private List assignedJobs; /* - * A value indicating the workers capacity. A value of '1' means all capacity is consumed. A value of '0' means no - * capacity is currently consumed. + * A value indicating the workers capacity. A value of '1' means all capacity is consumed. A value of '0' means no capacity is currently consumed. */ @Generated - @JsonProperty(value = "loadRatio", access = JsonProperty.Access.WRITE_ONLY) private Double loadRatio; /* * A flag indicating this worker is open to receive offers or not. */ @Generated - @JsonProperty(value = "availableForOffers") private Boolean availableForOffers; /** @@ -162,6 +154,7 @@ public List getQueues() { @Generated public RouterWorkerInternal setQueues(List queues) { this.queues = queues; + this.updatedProperties.add("queues"); return this; } @@ -184,12 +177,12 @@ public Integer getCapacity() { @Generated public RouterWorkerInternal setCapacity(Integer capacity) { this.capacity = capacity; + this.updatedProperties.add("capacity"); return this; } /** - * Get the labels property: A set of key/value pairs that are identifying attributes used by the rules engines to - * make decisions. Values must be primitive values - number, string, boolean. + * Get the labels property: A set of key/value pairs that are identifying attributes used by the rules engines to make decisions. Values must be primitive values - number, string, boolean. * * @return the labels value. */ @@ -199,8 +192,7 @@ public Map getLabels() { } /** - * Set the labels property: A set of key/value pairs that are identifying attributes used by the rules engines to - * make decisions. Values must be primitive values - number, string, boolean. + * Set the labels property: A set of key/value pairs that are identifying attributes used by the rules engines to make decisions. Values must be primitive values - number, string, boolean. * * @param labels the labels value to set. * @return the RouterWorkerInternal object itself. @@ -208,12 +200,12 @@ public Map getLabels() { @Generated public RouterWorkerInternal setLabels(Map labels) { this.labels = labels; + this.updatedProperties.add("labels"); return this; } /** - * Get the tags property: A set of non-identifying attributes attached to this worker. Values must be primitive - * values - number, string, boolean. + * Get the tags property: A set of non-identifying attributes attached to this worker. Values must be primitive values - number, string, boolean. * * @return the tags value. */ @@ -223,8 +215,7 @@ public Map getTags() { } /** - * Set the tags property: A set of non-identifying attributes attached to this worker. Values must be primitive - * values - number, string, boolean. + * Set the tags property: A set of non-identifying attributes attached to this worker. Values must be primitive values - number, string, boolean. * * @param tags the tags value to set. * @return the RouterWorkerInternal object itself. @@ -232,12 +223,12 @@ public Map getTags() { @Generated public RouterWorkerInternal setTags(Map tags) { this.tags = tags; + this.updatedProperties.add("tags"); return this; } /** - * Get the channels property: Collection of channel(s) this worker can handle and their impact on the workers - * capacity. + * Get the channels property: Collection of channel(s) this worker can handle and their impact on the workers capacity. * * @return the channels value. */ @@ -247,8 +238,7 @@ public List getChannels() { } /** - * Set the channels property: Collection of channel(s) this worker can handle and their impact on the workers - * capacity. + * Set the channels property: Collection of channel(s) this worker can handle and their impact on the workers capacity. * * @param channels the channels value to set. * @return the RouterWorkerInternal object itself. @@ -256,6 +246,7 @@ public List getChannels() { @Generated public RouterWorkerInternal setChannels(List channels) { this.channels = channels; + this.updatedProperties.add("channels"); return this; } @@ -280,8 +271,7 @@ public List getAssignedJobs() { } /** - * Get the loadRatio property: A value indicating the workers capacity. A value of '1' means all capacity is - * consumed. A value of '0' means no capacity is currently consumed. + * Get the loadRatio property: A value indicating the workers capacity. A value of '1' means all capacity is consumed. A value of '0' means no capacity is currently consumed. * * @return the loadRatio value. */ @@ -309,6 +299,7 @@ public Boolean isAvailableForOffers() { @Generated public RouterWorkerInternal setAvailableForOffers(Boolean availableForOffers) { this.availableForOffers = availableForOffers; + this.updatedProperties.add("availableForOffers"); return this; } @@ -316,12 +307,10 @@ public RouterWorkerInternal setAvailableForOffers(Boolean availableForOffers) { * If this is set, the worker will only receive up to this many new offers at a time. */ @Generated - @JsonProperty(value = "maxConcurrentOffers") private Integer maxConcurrentOffers; /** - * Get the maxConcurrentOffers property: If this is set, the worker will only receive up to this many new offers at - * a time. + * Get the maxConcurrentOffers property: If this is set, the worker will only receive up to this many new offers at a time. * * @return the maxConcurrentOffers value. */ @@ -331,8 +320,7 @@ public Integer getMaxConcurrentOffers() { } /** - * Set the maxConcurrentOffers property: If this is set, the worker will only receive up to this many new offers at - * a time. + * Set the maxConcurrentOffers property: If this is set, the worker will only receive up to this many new offers at a time. * * @param maxConcurrentOffers the maxConcurrentOffers value to set. * @return the RouterWorkerInternal object itself. @@ -340,6 +328,179 @@ public Integer getMaxConcurrentOffers() { @Generated public RouterWorkerInternal setMaxConcurrentOffers(Integer maxConcurrentOffers) { this.maxConcurrentOffers = maxConcurrentOffers; + this.updatedProperties.add("maxConcurrentOffers"); return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRouterWorkerInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("queues", this.queues, (writer, element) -> writer.writeString(element)); + jsonWriter.writeNumberField("capacity", this.capacity); + jsonWriter.writeMapField("labels", this.labels, (writer, element) -> writer.writeUntyped(element)); + jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeUntyped(element)); + jsonWriter.writeArrayField("channels", this.channels, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeBooleanField("availableForOffers", this.availableForOffers); + jsonWriter.writeNumberField("maxConcurrentOffers", this.maxConcurrentOffers); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("queues")) { + if (this.queues == null) { + jsonWriter.writeNullField("queues"); + } else { + jsonWriter.writeArrayField("queues", this.queues, (writer, element) -> writer.writeString(element)); + } + } + if (updatedProperties.contains("capacity")) { + if (this.capacity == null) { + jsonWriter.writeNullField("capacity"); + } else { + jsonWriter.writeNumberField("capacity", this.capacity); + } + } + if (updatedProperties.contains("labels")) { + if (this.labels == null) { + jsonWriter.writeNullField("labels"); + } else { + jsonWriter.writeMapField("labels", this.labels, (writer, element) -> writer.writeUntyped(element)); + } + } + if (updatedProperties.contains("tags")) { + if (this.tags == null) { + jsonWriter.writeNullField("tags"); + } else { + jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeUntyped(element)); + } + } + if (updatedProperties.contains("channels")) { + if (this.channels == null) { + jsonWriter.writeNullField("channels"); + } else { + jsonWriter.writeArrayField("channels", this.channels, (writer, element) -> writer.writeJson(element)); + } + } + if (updatedProperties.contains("availableForOffers")) { + if (this.availableForOffers == null) { + jsonWriter.writeNullField("availableForOffers"); + } else { + jsonWriter.writeBooleanField("availableForOffers", this.availableForOffers); + } + } + if (updatedProperties.contains("maxConcurrentOffers")) { + if (this.maxConcurrentOffers == null) { + jsonWriter.writeNullField("maxConcurrentOffers"); + } else { + jsonWriter.writeNumberField("maxConcurrentOffers", this.maxConcurrentOffers); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterWorkerInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RouterWorkerInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RouterWorkerInternal. + */ + @Generated + public static RouterWorkerInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String etag = null; + String id = null; + RouterWorkerState state = null; + List queues = null; + Integer capacity = null; + Map labels = null; + Map tags = null; + List channels = null; + List offers = null; + List assignedJobs = null; + Double loadRatio = null; + Boolean availableForOffers = null; + Integer maxConcurrentOffers = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("etag".equals(fieldName)) { + etag = reader.getString(); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("state".equals(fieldName)) { + state = RouterWorkerState.fromString(reader.getString()); + } else if ("queues".equals(fieldName)) { + queues = reader.readArray(reader1 -> reader1.getString()); + } else if ("capacity".equals(fieldName)) { + capacity = reader.getNullable(JsonReader::getInt); + } else if ("labels".equals(fieldName)) { + labels = reader.readMap(reader1 -> reader1.readUntyped()); + } else if ("tags".equals(fieldName)) { + tags = reader.readMap(reader1 -> reader1.readUntyped()); + } else if ("channels".equals(fieldName)) { + channels = reader.readArray(reader1 -> RouterChannel.fromJson(reader1)); + } else if ("offers".equals(fieldName)) { + offers = reader.readArray(reader1 -> RouterJobOffer.fromJson(reader1)); + } else if ("assignedJobs".equals(fieldName)) { + assignedJobs = reader.readArray(reader1 -> RouterWorkerAssignment.fromJson(reader1)); + } else if ("loadRatio".equals(fieldName)) { + loadRatio = reader.getNullable(JsonReader::getDouble); + } else if ("availableForOffers".equals(fieldName)) { + availableForOffers = reader.getNullable(JsonReader::getBoolean); + } else if ("maxConcurrentOffers".equals(fieldName)) { + maxConcurrentOffers = reader.getNullable(JsonReader::getInt); + } else { + reader.skipChildren(); + } + } + RouterWorkerInternal deserializedRouterWorkerInternal = new RouterWorkerInternal(); + deserializedRouterWorkerInternal.etag = etag; + deserializedRouterWorkerInternal.id = id; + deserializedRouterWorkerInternal.state = state; + deserializedRouterWorkerInternal.queues = queues; + deserializedRouterWorkerInternal.capacity = capacity; + deserializedRouterWorkerInternal.labels = labels; + deserializedRouterWorkerInternal.tags = tags; + deserializedRouterWorkerInternal.channels = channels; + deserializedRouterWorkerInternal.offers = offers; + deserializedRouterWorkerInternal.assignedJobs = assignedJobs; + deserializedRouterWorkerInternal.loadRatio = loadRatio; + deserializedRouterWorkerInternal.availableForOffers = availableForOffers; + deserializedRouterWorkerInternal.maxConcurrentOffers = maxConcurrentOffers; + return deserializedRouterWorkerInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterWorkerSelectorInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterWorkerSelectorInternal.java index 0a6474065d6e..44e6c3040055 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterWorkerSelectorInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RouterWorkerSelectorInternal.java @@ -3,84 +3,68 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.communication.jobrouter.models.LabelOperator; import com.azure.communication.jobrouter.models.RouterWorkerSelectorStatus; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.time.OffsetDateTime; +import java.util.HashSet; +import java.util.Set; /** * Describes a condition that must be met against a set of labels for worker selection. */ @Fluent -public final class RouterWorkerSelectorInternal { +public final class RouterWorkerSelectorInternal implements JsonSerializable { /* * The label key to query against. */ @Generated - @JsonProperty(value = "key") private String key; /* * Describes how the value of the label is compared to the value defined on the worker selector. */ @Generated - @JsonProperty(value = "labelOperator") private LabelOperator labelOperator; /* - * The value to compare against the actual label value with the given operator. Values must be primitive values - - * number, string, boolean. + * The value to compare against the actual label value with the given operator. Values must be primitive values - number, string, boolean. */ @Generated - @JsonProperty(value = "value") private Object value; /* * Describes how long this label selector is valid in seconds. */ @Generated - @JsonProperty(value = "expiresAfterSeconds") private Double expiresAfterSeconds; /* * Pushes a job to the front of the queue as long as this selector is active. */ @Generated - @JsonProperty(value = "expedite") private Boolean expedite; /* * Status of the worker selector. */ @Generated - @JsonProperty(value = "status", access = JsonProperty.Access.WRITE_ONLY) private RouterWorkerSelectorStatus status; /* * The time at which this worker selector expires in UTC. */ @Generated - @JsonProperty(value = "expiresAt", access = JsonProperty.Access.WRITE_ONLY) private OffsetDateTime expiresAt; - /** - * Creates an instance of RouterWorkerSelectorInternal class. - * - * @param key the key value to set. - * @param labelOperator the labelOperator value to set. - */ - @Generated - @JsonCreator - public RouterWorkerSelectorInternal(@JsonProperty(value = "key") String key, - @JsonProperty(value = "labelOperator") LabelOperator labelOperator) { - this.key = key; - this.labelOperator = labelOperator; - } - /** * Get the key property: The label key to query against. * @@ -92,8 +76,7 @@ public String getKey() { } /** - * Get the labelOperator property: Describes how the value of the label is compared to the value defined on the - * worker selector. + * Get the labelOperator property: Describes how the value of the label is compared to the value defined on the worker selector. * * @return the labelOperator value. */ @@ -103,8 +86,7 @@ public LabelOperator getLabelOperator() { } /** - * Get the value property: The value to compare against the actual label value with the given operator. Values must - * be primitive values - number, string, boolean. + * Get the value property: The value to compare against the actual label value with the given operator. Values must be primitive values - number, string, boolean. * * @return the value value. */ @@ -114,8 +96,7 @@ public Object getValue() { } /** - * Set the value property: The value to compare against the actual label value with the given operator. Values must - * be primitive values - number, string, boolean. + * Set the value property: The value to compare against the actual label value with the given operator. Values must be primitive values - number, string, boolean. * * @param value the value value to set. * @return the RouterWorkerSelectorInternal object itself. @@ -123,6 +104,7 @@ public Object getValue() { @Generated public RouterWorkerSelectorInternal setValue(Object value) { this.value = value; + this.updatedProperties.add("value"); return this; } @@ -145,6 +127,7 @@ public Double getExpiresAfterSeconds() { @Generated public RouterWorkerSelectorInternal setExpiresAfterSeconds(Double expiresAfterSeconds) { this.expiresAfterSeconds = expiresAfterSeconds; + this.updatedProperties.add("expiresAfterSeconds"); return this; } @@ -167,6 +150,7 @@ public Boolean isExpedite() { @Generated public RouterWorkerSelectorInternal setExpedite(Boolean expedite) { this.expedite = expedite; + this.updatedProperties.add("expedite"); return this; } @@ -211,4 +195,162 @@ public RouterWorkerSelectorInternal setExpiresAt(OffsetDateTime expiresAt) { this.expiresAt = expiresAt; return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRouterWorkerSelectorInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Creates an instance of RouterWorkerSelectorInternal class. + */ + @Generated + public RouterWorkerSelectorInternal() { + } + + /** + * Set the key property: The label key to query against. + *

Required when create the resource.

+ * + * @param key the key value to set. + * @return the RouterWorkerSelectorInternal object itself. + */ + @Generated + public RouterWorkerSelectorInternal setKey(String key) { + this.key = key; + this.updatedProperties.add("key"); + return this; + } + + /** + * Set the labelOperator property: Describes how the value of the label is compared to the value defined on the worker selector. + *

Required when create the resource.

+ * + * @param labelOperator the labelOperator value to set. + * @return the RouterWorkerSelectorInternal object itself. + */ + @Generated + public RouterWorkerSelectorInternal setLabelOperator(LabelOperator labelOperator) { + this.labelOperator = labelOperator; + this.updatedProperties.add("labelOperator"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("key", this.key); + jsonWriter.writeStringField("labelOperator", + this.labelOperator == null ? null : this.labelOperator.toString()); + jsonWriter.writeUntypedField("value", this.value); + jsonWriter.writeNumberField("expiresAfterSeconds", this.expiresAfterSeconds); + jsonWriter.writeBooleanField("expedite", this.expedite); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("key")) { + if (this.key == null) { + jsonWriter.writeNullField("key"); + } else { + jsonWriter.writeStringField("key", this.key); + } + } + if (updatedProperties.contains("labelOperator")) { + if (this.labelOperator == null) { + jsonWriter.writeNullField("labelOperator"); + } else { + jsonWriter.writeStringField("labelOperator", + this.labelOperator == null ? null : this.labelOperator.toString()); + } + } + if (updatedProperties.contains("value")) { + if (this.value == null) { + jsonWriter.writeNullField("value"); + } else { + jsonWriter.writeUntypedField("value", this.value); + } + } + if (updatedProperties.contains("expiresAfterSeconds")) { + if (this.expiresAfterSeconds == null) { + jsonWriter.writeNullField("expiresAfterSeconds"); + } else { + jsonWriter.writeNumberField("expiresAfterSeconds", this.expiresAfterSeconds); + } + } + if (updatedProperties.contains("expedite")) { + if (this.expedite == null) { + jsonWriter.writeNullField("expedite"); + } else { + jsonWriter.writeBooleanField("expedite", this.expedite); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterWorkerSelectorInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RouterWorkerSelectorInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RouterWorkerSelectorInternal. + */ + @Generated + public static RouterWorkerSelectorInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RouterWorkerSelectorInternal deserializedRouterWorkerSelectorInternal = new RouterWorkerSelectorInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("key".equals(fieldName)) { + deserializedRouterWorkerSelectorInternal.key = reader.getString(); + } else if ("labelOperator".equals(fieldName)) { + deserializedRouterWorkerSelectorInternal.labelOperator + = LabelOperator.fromString(reader.getString()); + } else if ("value".equals(fieldName)) { + deserializedRouterWorkerSelectorInternal.value = reader.readUntyped(); + } else if ("expiresAfterSeconds".equals(fieldName)) { + deserializedRouterWorkerSelectorInternal.expiresAfterSeconds + = reader.getNullable(JsonReader::getDouble); + } else if ("expedite".equals(fieldName)) { + deserializedRouterWorkerSelectorInternal.expedite = reader.getNullable(JsonReader::getBoolean); + } else if ("status".equals(fieldName)) { + deserializedRouterWorkerSelectorInternal.status + = RouterWorkerSelectorStatus.fromString(reader.getString()); + } else if ("expiresAt".equals(fieldName)) { + deserializedRouterWorkerSelectorInternal.expiresAt + = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())); + } else { + reader.skipChildren(); + } + } + return deserializedRouterWorkerSelectorInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RuleEngineQueueSelectorAttachmentInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RuleEngineQueueSelectorAttachmentInternal.java index 2b307b4e9e49..2f9d16497b10 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RuleEngineQueueSelectorAttachmentInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RuleEngineQueueSelectorAttachmentInternal.java @@ -3,46 +3,145 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.QueueSelectorAttachmentKind; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Attaches queue selectors to a job when the RouterRule is resolved. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("ruleEngine") -@Immutable +@Fluent public final class RuleEngineQueueSelectorAttachmentInternal extends QueueSelectorAttachmentInternal { /* * A RouterRule that resolves a collection of queue selectors to attach. */ @Generated - @JsonProperty(value = "rule") private RouterRuleInternal rule; + /** + * Get the rule property: A RouterRule that resolves a collection of queue selectors to attach. + * + * @return the rule value. + */ + @Generated + public RouterRuleInternal getRule() { + return this.rule; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRuleEngineQueueSelectorAttachmentInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of RuleEngineQueueSelectorAttachmentInternal class. + */ + @Generated + public RuleEngineQueueSelectorAttachmentInternal() { + setKind(QueueSelectorAttachmentKind.RULE_ENGINE); + } + + /** + * Set the rule property: A RouterRule that resolves a collection of queue selectors to attach. + *

Required when create the resource.

* * @param rule the rule value to set. + * @return the RuleEngineQueueSelectorAttachmentInternal object itself. */ @Generated - @JsonCreator - public RuleEngineQueueSelectorAttachmentInternal(@JsonProperty(value = "rule") RouterRuleInternal rule) { + public RuleEngineQueueSelectorAttachmentInternal setRule(RouterRuleInternal rule) { this.rule = rule; + this.updatedProperties.add("rule"); + return this; } /** - * Get the rule property: A RouterRule that resolves a collection of queue selectors to attach. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeJsonField("rule", this.rule); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("rule")) { + if (this.rule == null) { + jsonWriter.writeNullField("rule"); + } else { + this.rule.serializeAsJsonMergePatch(true); + jsonWriter.writeJsonField("rule", this.rule); + this.rule.serializeAsJsonMergePatch(false); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RuleEngineQueueSelectorAttachmentInternal from the JsonReader. * - * @return the rule value. + * @param jsonReader The JsonReader being read. + * @return An instance of RuleEngineQueueSelectorAttachmentInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RuleEngineQueueSelectorAttachmentInternal. */ @Generated - public RouterRuleInternal getRule() { - return this.rule; + public static RuleEngineQueueSelectorAttachmentInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RuleEngineQueueSelectorAttachmentInternal deserializedRuleEngineQueueSelectorAttachmentInternal + = new RuleEngineQueueSelectorAttachmentInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedRuleEngineQueueSelectorAttachmentInternal + .setKind(QueueSelectorAttachmentKind.fromString(reader.getString())); + } else if ("rule".equals(fieldName)) { + deserializedRuleEngineQueueSelectorAttachmentInternal.rule = RouterRuleInternal.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRuleEngineQueueSelectorAttachmentInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RuleEngineWorkerSelectorAttachmentInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RuleEngineWorkerSelectorAttachmentInternal.java index 562633495c8e..4c0e4c833cb4 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RuleEngineWorkerSelectorAttachmentInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/RuleEngineWorkerSelectorAttachmentInternal.java @@ -3,46 +3,145 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.WorkerSelectorAttachmentKind; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Attaches worker selectors to a job when a RouterRule is resolved. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("ruleEngine") -@Immutable +@Fluent public final class RuleEngineWorkerSelectorAttachmentInternal extends WorkerSelectorAttachmentInternal { /* * A RouterRule that resolves a collection of worker selectors to attach. */ @Generated - @JsonProperty(value = "rule") private RouterRuleInternal rule; + /** + * Get the rule property: A RouterRule that resolves a collection of worker selectors to attach. + * + * @return the rule value. + */ + @Generated + public RouterRuleInternal getRule() { + return this.rule; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRuleEngineWorkerSelectorAttachmentInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of RuleEngineWorkerSelectorAttachmentInternal class. + */ + @Generated + public RuleEngineWorkerSelectorAttachmentInternal() { + setKind(WorkerSelectorAttachmentKind.RULE_ENGINE); + } + + /** + * Set the rule property: A RouterRule that resolves a collection of worker selectors to attach. + *

Required when create the resource.

* * @param rule the rule value to set. + * @return the RuleEngineWorkerSelectorAttachmentInternal object itself. */ @Generated - @JsonCreator - public RuleEngineWorkerSelectorAttachmentInternal(@JsonProperty(value = "rule") RouterRuleInternal rule) { + public RuleEngineWorkerSelectorAttachmentInternal setRule(RouterRuleInternal rule) { this.rule = rule; + this.updatedProperties.add("rule"); + return this; } /** - * Get the rule property: A RouterRule that resolves a collection of worker selectors to attach. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeJsonField("rule", this.rule); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("rule")) { + if (this.rule == null) { + jsonWriter.writeNullField("rule"); + } else { + this.rule.serializeAsJsonMergePatch(true); + jsonWriter.writeJsonField("rule", this.rule); + this.rule.serializeAsJsonMergePatch(false); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RuleEngineWorkerSelectorAttachmentInternal from the JsonReader. * - * @return the rule value. + * @param jsonReader The JsonReader being read. + * @return An instance of RuleEngineWorkerSelectorAttachmentInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RuleEngineWorkerSelectorAttachmentInternal. */ @Generated - public RouterRuleInternal getRule() { - return this.rule; + public static RuleEngineWorkerSelectorAttachmentInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RuleEngineWorkerSelectorAttachmentInternal deserializedRuleEngineWorkerSelectorAttachmentInternal + = new RuleEngineWorkerSelectorAttachmentInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedRuleEngineWorkerSelectorAttachmentInternal + .setKind(WorkerSelectorAttachmentKind.fromString(reader.getString())); + } else if ("rule".equals(fieldName)) { + deserializedRuleEngineWorkerSelectorAttachmentInternal.rule = RouterRuleInternal.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRuleEngineWorkerSelectorAttachmentInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ScheduleAndSuspendModeInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ScheduleAndSuspendModeInternal.java index e85631ffb446..954d1f34bc23 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ScheduleAndSuspendModeInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/ScheduleAndSuspendModeInternal.java @@ -3,48 +3,148 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.JobMatchingModeKind; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashSet; +import java.util.Set; /** - * Describes a matching mode used for scheduling jobs to be queued at a future time. At the specified time, matching - * worker to a job will not start automatically. + * Describes a matching mode used for scheduling jobs to be queued at a future time. At the specified time, matching worker to a job will not start automatically. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("scheduleAndSuspend") -@Immutable +@Fluent public final class ScheduleAndSuspendModeInternal extends JobMatchingModeInternal { /* * Requested schedule time. */ @Generated - @JsonProperty(value = "scheduleAt") private OffsetDateTime scheduleAt; + /** + * Get the scheduleAt property: Requested schedule time. + * + * @return the scheduleAt value. + */ + @Generated + public OffsetDateTime getScheduleAt() { + return this.scheduleAt; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setScheduleAndSuspendModeInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of ScheduleAndSuspendModeInternal class. + */ + @Generated + public ScheduleAndSuspendModeInternal() { + setKind(JobMatchingModeKind.SCHEDULE_AND_SUSPEND); + } + + /** + * Set the scheduleAt property: Requested schedule time. + *

Required when create the resource.

* * @param scheduleAt the scheduleAt value to set. + * @return the ScheduleAndSuspendModeInternal object itself. */ @Generated - @JsonCreator - public ScheduleAndSuspendModeInternal(@JsonProperty(value = "scheduleAt") OffsetDateTime scheduleAt) { + public ScheduleAndSuspendModeInternal setScheduleAt(OffsetDateTime scheduleAt) { this.scheduleAt = scheduleAt; + this.updatedProperties.add("scheduleAt"); + return this; } /** - * Get the scheduleAt property: Requested schedule time. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("scheduleAt", + this.scheduleAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.scheduleAt)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("scheduleAt")) { + if (this.scheduleAt == null) { + jsonWriter.writeNullField("scheduleAt"); + } else { + jsonWriter.writeStringField("scheduleAt", + this.scheduleAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.scheduleAt)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ScheduleAndSuspendModeInternal from the JsonReader. * - * @return the scheduleAt value. + * @param jsonReader The JsonReader being read. + * @return An instance of ScheduleAndSuspendModeInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ScheduleAndSuspendModeInternal. */ @Generated - public OffsetDateTime getScheduleAt() { - return this.scheduleAt; + public static ScheduleAndSuspendModeInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ScheduleAndSuspendModeInternal deserializedScheduleAndSuspendModeInternal + = new ScheduleAndSuspendModeInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedScheduleAndSuspendModeInternal + .setKind(JobMatchingModeKind.fromString(reader.getString())); + } else if ("scheduleAt".equals(fieldName)) { + deserializedScheduleAndSuspendModeInternal.scheduleAt + = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())); + } else { + reader.skipChildren(); + } + } + return deserializedScheduleAndSuspendModeInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/StaticQueueSelectorAttachmentInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/StaticQueueSelectorAttachmentInternal.java index 9f17328012f9..c80df70cb90a 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/StaticQueueSelectorAttachmentInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/StaticQueueSelectorAttachmentInternal.java @@ -3,47 +3,146 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.QueueSelectorAttachmentKind; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Describes a queue selector that will be attached to a job. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("static") -@Immutable +@Fluent public final class StaticQueueSelectorAttachmentInternal extends QueueSelectorAttachmentInternal { /* * The queue selector to attach. */ @Generated - @JsonProperty(value = "queueSelector") private RouterQueueSelectorInternal queueSelector; + /** + * Get the queueSelector property: The queue selector to attach. + * + * @return the queueSelector value. + */ + @Generated + public RouterQueueSelectorInternal getQueueSelector() { + return this.queueSelector; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setStaticQueueSelectorAttachmentInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of StaticQueueSelectorAttachmentInternal class. + */ + @Generated + public StaticQueueSelectorAttachmentInternal() { + setKind(QueueSelectorAttachmentKind.STATIC); + } + + /** + * Set the queueSelector property: The queue selector to attach. + *

Required when create the resource.

* * @param queueSelector the queueSelector value to set. + * @return the StaticQueueSelectorAttachmentInternal object itself. */ @Generated - @JsonCreator - public StaticQueueSelectorAttachmentInternal( - @JsonProperty(value = "queueSelector") RouterQueueSelectorInternal queueSelector) { + public StaticQueueSelectorAttachmentInternal setQueueSelector(RouterQueueSelectorInternal queueSelector) { this.queueSelector = queueSelector; + this.updatedProperties.add("queueSelector"); + return this; } /** - * Get the queueSelector property: The queue selector to attach. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeJsonField("queueSelector", this.queueSelector); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("queueSelector")) { + if (this.queueSelector == null) { + jsonWriter.writeNullField("queueSelector"); + } else { + this.queueSelector.serializeAsJsonMergePatch(true); + jsonWriter.writeJsonField("queueSelector", this.queueSelector); + this.queueSelector.serializeAsJsonMergePatch(false); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of StaticQueueSelectorAttachmentInternal from the JsonReader. * - * @return the queueSelector value. + * @param jsonReader The JsonReader being read. + * @return An instance of StaticQueueSelectorAttachmentInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the StaticQueueSelectorAttachmentInternal. */ @Generated - public RouterQueueSelectorInternal getQueueSelector() { - return this.queueSelector; + public static StaticQueueSelectorAttachmentInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + StaticQueueSelectorAttachmentInternal deserializedStaticQueueSelectorAttachmentInternal + = new StaticQueueSelectorAttachmentInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedStaticQueueSelectorAttachmentInternal + .setKind(QueueSelectorAttachmentKind.fromString(reader.getString())); + } else if ("queueSelector".equals(fieldName)) { + deserializedStaticQueueSelectorAttachmentInternal.queueSelector + = RouterQueueSelectorInternal.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedStaticQueueSelectorAttachmentInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/StaticRouterRuleInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/StaticRouterRuleInternal.java index 3114a507497c..3fa0a5ec7f84 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/StaticRouterRuleInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/StaticRouterRuleInternal.java @@ -3,17 +3,20 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.RouterRuleKind; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * A rule providing static rules that always return the same result, regardless of input. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("static") @Fluent public final class StaticRouterRuleInternal extends RouterRuleInternal { @@ -21,7 +24,6 @@ public final class StaticRouterRuleInternal extends RouterRuleInternal { * The static value this rule always returns. Values must be primitive values - number, string, boolean. */ @Generated - @JsonProperty(value = "value") private Object value; /** @@ -29,11 +31,11 @@ public final class StaticRouterRuleInternal extends RouterRuleInternal { */ @Generated public StaticRouterRuleInternal() { + setKind(RouterRuleKind.STATIC); } /** - * Get the value property: The static value this rule always returns. Values must be primitive values - number, - * string, boolean. + * Get the value property: The static value this rule always returns. Values must be primitive values - number, string, boolean. * * @return the value value. */ @@ -43,8 +45,7 @@ public Object getValue() { } /** - * Set the value property: The static value this rule always returns. Values must be primitive values - number, - * string, boolean. + * Set the value property: The static value this rule always returns. Values must be primitive values - number, string, boolean. * * @param value the value value to set. * @return the StaticRouterRuleInternal object itself. @@ -52,6 +53,90 @@ public Object getValue() { @Generated public StaticRouterRuleInternal setValue(Object value) { this.value = value; + this.updatedProperties.add("value"); return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setStaticRouterRuleInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeUntypedField("value", this.value); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("value")) { + if (this.value == null) { + jsonWriter.writeNullField("value"); + } else { + jsonWriter.writeUntypedField("value", this.value); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of StaticRouterRuleInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of StaticRouterRuleInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the StaticRouterRuleInternal. + */ + @Generated + public static StaticRouterRuleInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + StaticRouterRuleInternal deserializedStaticRouterRuleInternal = new StaticRouterRuleInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedStaticRouterRuleInternal.setKind(RouterRuleKind.fromString(reader.getString())); + } else if ("value".equals(fieldName)) { + deserializedStaticRouterRuleInternal.value = reader.readUntyped(); + } else { + reader.skipChildren(); + } + } + return deserializedStaticRouterRuleInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/StaticWorkerSelectorAttachmentInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/StaticWorkerSelectorAttachmentInternal.java index a1b61872f688..8cb1244990cf 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/StaticWorkerSelectorAttachmentInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/StaticWorkerSelectorAttachmentInternal.java @@ -3,47 +3,146 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.WorkerSelectorAttachmentKind; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Describes a worker selector that will be attached to a job. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("static") -@Immutable +@Fluent public final class StaticWorkerSelectorAttachmentInternal extends WorkerSelectorAttachmentInternal { /* * The worker selector to attach. */ @Generated - @JsonProperty(value = "workerSelector") private RouterWorkerSelectorInternal workerSelector; + /** + * Get the workerSelector property: The worker selector to attach. + * + * @return the workerSelector value. + */ + @Generated + public RouterWorkerSelectorInternal getWorkerSelector() { + return this.workerSelector; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setStaticWorkerSelectorAttachmentInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of StaticWorkerSelectorAttachmentInternal class. + */ + @Generated + public StaticWorkerSelectorAttachmentInternal() { + setKind(WorkerSelectorAttachmentKind.STATIC); + } + + /** + * Set the workerSelector property: The worker selector to attach. + *

Required when create the resource.

* * @param workerSelector the workerSelector value to set. + * @return the StaticWorkerSelectorAttachmentInternal object itself. */ @Generated - @JsonCreator - public StaticWorkerSelectorAttachmentInternal( - @JsonProperty(value = "workerSelector") RouterWorkerSelectorInternal workerSelector) { + public StaticWorkerSelectorAttachmentInternal setWorkerSelector(RouterWorkerSelectorInternal workerSelector) { this.workerSelector = workerSelector; + this.updatedProperties.add("workerSelector"); + return this; } /** - * Get the workerSelector property: The worker selector to attach. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeJsonField("workerSelector", this.workerSelector); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("workerSelector")) { + if (this.workerSelector == null) { + jsonWriter.writeNullField("workerSelector"); + } else { + this.workerSelector.serializeAsJsonMergePatch(true); + jsonWriter.writeJsonField("workerSelector", this.workerSelector); + this.workerSelector.serializeAsJsonMergePatch(false); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of StaticWorkerSelectorAttachmentInternal from the JsonReader. * - * @return the workerSelector value. + * @param jsonReader The JsonReader being read. + * @return An instance of StaticWorkerSelectorAttachmentInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the StaticWorkerSelectorAttachmentInternal. */ @Generated - public RouterWorkerSelectorInternal getWorkerSelector() { - return this.workerSelector; + public static StaticWorkerSelectorAttachmentInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + StaticWorkerSelectorAttachmentInternal deserializedStaticWorkerSelectorAttachmentInternal + = new StaticWorkerSelectorAttachmentInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedStaticWorkerSelectorAttachmentInternal + .setKind(WorkerSelectorAttachmentKind.fromString(reader.getString())); + } else if ("workerSelector".equals(fieldName)) { + deserializedStaticWorkerSelectorAttachmentInternal.workerSelector + = RouterWorkerSelectorInternal.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedStaticWorkerSelectorAttachmentInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/SuspendModeInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/SuspendModeInternal.java index a837b038e726..6056ae12576d 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/SuspendModeInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/SuspendModeInternal.java @@ -3,16 +3,20 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.JobMatchingModeKind; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Describes a matching mode where matching worker to a job is suspended. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("suspend") @Immutable public final class SuspendModeInternal extends JobMatchingModeInternal { @@ -21,5 +25,79 @@ public final class SuspendModeInternal extends JobMatchingModeInternal { */ @Generated public SuspendModeInternal() { + setKind(JobMatchingModeKind.SUSPEND); + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setSuspendModeInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SuspendModeInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SuspendModeInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the SuspendModeInternal. + */ + @Generated + public static SuspendModeInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + SuspendModeInternal deserializedSuspendModeInternal = new SuspendModeInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedSuspendModeInternal.setKind(JobMatchingModeKind.fromString(reader.getString())); + } else { + reader.skipChildren(); + } + } + return deserializedSuspendModeInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WaitTimeExceptionTriggerInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WaitTimeExceptionTriggerInternal.java index 432f65e450a5..0feb620a1c5d 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WaitTimeExceptionTriggerInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WaitTimeExceptionTriggerInternal.java @@ -3,46 +3,136 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Trigger for an exception action on exceeding wait time. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("waitTime") -@Immutable +@Fluent public final class WaitTimeExceptionTriggerInternal extends ExceptionTriggerInternal { /* * Threshold for wait time for this trigger. */ @Generated - @JsonProperty(value = "thresholdSeconds") private double thresholdSeconds; + /** + * Get the thresholdSeconds property: Threshold for wait time for this trigger. + * + * @return the thresholdSeconds value. + */ + @Generated + public double getThresholdSeconds() { + return this.thresholdSeconds; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setWaitTimeExceptionTriggerInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of WaitTimeExceptionTriggerInternal class. + */ + @Generated + public WaitTimeExceptionTriggerInternal() { + setKind(ExceptionTriggerKind.WAIT_TIME); + } + + /** + * Set the thresholdSeconds property: Threshold for wait time for this trigger. + *

Required when create the resource.

* * @param thresholdSeconds the thresholdSeconds value to set. + * @return the WaitTimeExceptionTriggerInternal object itself. */ @Generated - @JsonCreator - public WaitTimeExceptionTriggerInternal(@JsonProperty(value = "thresholdSeconds") double thresholdSeconds) { + public WaitTimeExceptionTriggerInternal setThresholdSeconds(double thresholdSeconds) { this.thresholdSeconds = thresholdSeconds; + this.updatedProperties.add("thresholdSeconds"); + return this; } /** - * Get the thresholdSeconds property: Threshold for wait time for this trigger. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeDoubleField("thresholdSeconds", this.thresholdSeconds); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + jsonWriter.writeDoubleField("thresholdSeconds", this.thresholdSeconds); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of WaitTimeExceptionTriggerInternal from the JsonReader. * - * @return the thresholdSeconds value. + * @param jsonReader The JsonReader being read. + * @return An instance of WaitTimeExceptionTriggerInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the WaitTimeExceptionTriggerInternal. */ @Generated - public double getThresholdSeconds() { - return this.thresholdSeconds; + public static WaitTimeExceptionTriggerInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + WaitTimeExceptionTriggerInternal deserializedWaitTimeExceptionTriggerInternal + = new WaitTimeExceptionTriggerInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedWaitTimeExceptionTriggerInternal + .setKind(ExceptionTriggerKind.fromString(reader.getString())); + } else if ("thresholdSeconds".equals(fieldName)) { + deserializedWaitTimeExceptionTriggerInternal.thresholdSeconds = reader.getDouble(); + } else { + reader.skipChildren(); + } + } + return deserializedWaitTimeExceptionTriggerInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WebhookRouterRuleInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WebhookRouterRuleInternal.java index 12b4c113c2a8..73717148ae77 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WebhookRouterRuleInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WebhookRouterRuleInternal.java @@ -3,18 +3,21 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.communication.jobrouter.models.OAuth2WebhookClientCredential; +import com.azure.communication.jobrouter.models.RouterRuleKind; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * A rule providing a binding to an external web server. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("webhook") @Fluent public final class WebhookRouterRuleInternal extends RouterRuleInternal { @@ -22,22 +25,18 @@ public final class WebhookRouterRuleInternal extends RouterRuleInternal { * Uri for Authorization Server. */ @Generated - @JsonProperty(value = "authorizationServerUri") private String authorizationServerUri; /* - * OAuth2.0 Credentials used to Contoso's Authorization server. Reference: - * https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/ + * OAuth2.0 Credentials used to Contoso's Authorization server. Reference: https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/ */ @Generated - @JsonProperty(value = "clientCredential") private OAuth2WebhookClientCredential clientCredential; /* * Uri for Contoso's Web Server. */ @Generated - @JsonProperty(value = "webhookUri") private String webhookUri; /** @@ -45,6 +44,7 @@ public final class WebhookRouterRuleInternal extends RouterRuleInternal { */ @Generated public WebhookRouterRuleInternal() { + setKind(RouterRuleKind.WEBHOOK); } /** @@ -66,12 +66,12 @@ public String getAuthorizationServerUri() { @Generated public WebhookRouterRuleInternal setAuthorizationServerUri(String authorizationServerUri) { this.authorizationServerUri = authorizationServerUri; + this.updatedProperties.add("authorizationServerUri"); return this; } /** - * Get the clientCredential property: OAuth2.0 Credentials used to Contoso's Authorization server. Reference: - * https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/. + * Get the clientCredential property: OAuth2.0 Credentials used to Contoso's Authorization server. Reference: https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/. * * @return the clientCredential value. */ @@ -99,12 +99,12 @@ public String getWebhookUri() { @Generated public WebhookRouterRuleInternal setWebhookUri(String webhookUri) { this.webhookUri = webhookUri; + this.updatedProperties.add("webhookUri"); return this; } /** - * Set the clientCredential property: OAuth2.0 Credentials used to Contoso's Authorization server. Reference: - * https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/. + * Set the clientCredential property: OAuth2.0 Credentials used to Contoso's Authorization server. Reference: https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/. * * @param clientCredential the clientCredential value to set. * @return the WebhookRouterRuleInternal object itself. @@ -112,6 +112,113 @@ public WebhookRouterRuleInternal setWebhookUri(String webhookUri) { @Generated public WebhookRouterRuleInternal setClientCredential(OAuth2WebhookClientCredential clientCredential) { this.clientCredential = clientCredential; + this.updatedProperties.add("clientCredential"); return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setWebhookRouterRuleInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("authorizationServerUri", this.authorizationServerUri); + jsonWriter.writeJsonField("clientCredential", this.clientCredential); + jsonWriter.writeStringField("webhookUri", this.webhookUri); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("authorizationServerUri")) { + if (this.authorizationServerUri == null) { + jsonWriter.writeNullField("authorizationServerUri"); + } else { + jsonWriter.writeStringField("authorizationServerUri", this.authorizationServerUri); + } + } + if (updatedProperties.contains("clientCredential")) { + if (this.clientCredential == null) { + jsonWriter.writeNullField("clientCredential"); + } else { + this.clientCredential.serializeAsJsonMergePatch(true); + jsonWriter.writeJsonField("clientCredential", this.clientCredential); + this.clientCredential.serializeAsJsonMergePatch(false); + } + } + if (updatedProperties.contains("webhookUri")) { + if (this.webhookUri == null) { + jsonWriter.writeNullField("webhookUri"); + } else { + jsonWriter.writeStringField("webhookUri", this.webhookUri); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of WebhookRouterRuleInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of WebhookRouterRuleInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the WebhookRouterRuleInternal. + */ + @Generated + public static WebhookRouterRuleInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + WebhookRouterRuleInternal deserializedWebhookRouterRuleInternal = new WebhookRouterRuleInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedWebhookRouterRuleInternal.setKind(RouterRuleKind.fromString(reader.getString())); + } else if ("authorizationServerUri".equals(fieldName)) { + deserializedWebhookRouterRuleInternal.authorizationServerUri = reader.getString(); + } else if ("clientCredential".equals(fieldName)) { + deserializedWebhookRouterRuleInternal.clientCredential + = OAuth2WebhookClientCredential.fromJson(reader); + } else if ("webhookUri".equals(fieldName)) { + deserializedWebhookRouterRuleInternal.webhookUri = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedWebhookRouterRuleInternal; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WeightedAllocationQueueSelectorAttachmentInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WeightedAllocationQueueSelectorAttachmentInternal.java index a82d69805c32..e03268f28bb8 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WeightedAllocationQueueSelectorAttachmentInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WeightedAllocationQueueSelectorAttachmentInternal.java @@ -3,48 +3,149 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.QueueSelectorAttachmentKind; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Describes multiple sets of queue selectors, of which one will be selected and attached according to a weighting. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("weightedAllocation") -@Immutable +@Fluent public final class WeightedAllocationQueueSelectorAttachmentInternal extends QueueSelectorAttachmentInternal { /* * A collection of percentage based weighted allocations. */ @Generated - @JsonProperty(value = "allocations") private List allocations; + /** + * Get the allocations property: A collection of percentage based weighted allocations. + * + * @return the allocations value. + */ + @Generated + public List getAllocations() { + return this.allocations; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper + .setWeightedAllocationQueueSelectorAttachmentInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of WeightedAllocationQueueSelectorAttachmentInternal class. + */ + @Generated + public WeightedAllocationQueueSelectorAttachmentInternal() { + setKind(QueueSelectorAttachmentKind.WEIGHTED_ALLOCATION); + } + + /** + * Set the allocations property: A collection of percentage based weighted allocations. + *

Required when create the resource.

* * @param allocations the allocations value to set. + * @return the WeightedAllocationQueueSelectorAttachmentInternal object itself. */ @Generated - @JsonCreator - public WeightedAllocationQueueSelectorAttachmentInternal( - @JsonProperty(value = "allocations") List allocations) { + public WeightedAllocationQueueSelectorAttachmentInternal + setAllocations(List allocations) { this.allocations = allocations; + this.updatedProperties.add("allocations"); + return this; } /** - * Get the allocations property: A collection of percentage based weighted allocations. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeArrayField("allocations", this.allocations, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("allocations")) { + if (this.allocations == null) { + jsonWriter.writeNullField("allocations"); + } else { + jsonWriter.writeArrayField("allocations", this.allocations, + (writer, element) -> writer.writeJson(element)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of WeightedAllocationQueueSelectorAttachmentInternal from the JsonReader. * - * @return the allocations value. + * @param jsonReader The JsonReader being read. + * @return An instance of WeightedAllocationQueueSelectorAttachmentInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the WeightedAllocationQueueSelectorAttachmentInternal. */ @Generated - public List getAllocations() { - return this.allocations; + public static WeightedAllocationQueueSelectorAttachmentInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + WeightedAllocationQueueSelectorAttachmentInternal deserializedWeightedAllocationQueueSelectorAttachmentInternal + = new WeightedAllocationQueueSelectorAttachmentInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedWeightedAllocationQueueSelectorAttachmentInternal + .setKind(QueueSelectorAttachmentKind.fromString(reader.getString())); + } else if ("allocations".equals(fieldName)) { + List allocations + = reader.readArray(reader1 -> QueueWeightedAllocationInternal.fromJson(reader1)); + deserializedWeightedAllocationQueueSelectorAttachmentInternal.allocations = allocations; + } else { + reader.skipChildren(); + } + } + return deserializedWeightedAllocationQueueSelectorAttachmentInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WeightedAllocationWorkerSelectorAttachmentInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WeightedAllocationWorkerSelectorAttachmentInternal.java index d0753a41be2e..e6a4b2eb6a6a 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WeightedAllocationWorkerSelectorAttachmentInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WeightedAllocationWorkerSelectorAttachmentInternal.java @@ -3,48 +3,150 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.WorkerSelectorAttachmentKind; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Describes multiple sets of worker selectors, of which one will be selected and attached according to a weighting. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("weightedAllocation") -@Immutable +@Fluent public final class WeightedAllocationWorkerSelectorAttachmentInternal extends WorkerSelectorAttachmentInternal { /* * A collection of percentage based weighted allocations. */ @Generated - @JsonProperty(value = "allocations") private List allocations; + /** + * Get the allocations property: A collection of percentage based weighted allocations. + * + * @return the allocations value. + */ + @Generated + public List getAllocations() { + return this.allocations; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper + .setWeightedAllocationWorkerSelectorAttachmentInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of WeightedAllocationWorkerSelectorAttachmentInternal class. + */ + @Generated + public WeightedAllocationWorkerSelectorAttachmentInternal() { + setKind(WorkerSelectorAttachmentKind.WEIGHTED_ALLOCATION); + } + + /** + * Set the allocations property: A collection of percentage based weighted allocations. + *

Required when create the resource.

* * @param allocations the allocations value to set. + * @return the WeightedAllocationWorkerSelectorAttachmentInternal object itself. */ @Generated - @JsonCreator - public WeightedAllocationWorkerSelectorAttachmentInternal( - @JsonProperty(value = "allocations") List allocations) { + public WeightedAllocationWorkerSelectorAttachmentInternal + setAllocations(List allocations) { this.allocations = allocations; + this.updatedProperties.add("allocations"); + return this; } /** - * Get the allocations property: A collection of percentage based weighted allocations. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeArrayField("allocations", this.allocations, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (getKind() == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + } + } + if (updatedProperties.contains("allocations")) { + if (this.allocations == null) { + jsonWriter.writeNullField("allocations"); + } else { + jsonWriter.writeArrayField("allocations", this.allocations, + (writer, element) -> writer.writeJson(element)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of WeightedAllocationWorkerSelectorAttachmentInternal from the JsonReader. * - * @return the allocations value. + * @param jsonReader The JsonReader being read. + * @return An instance of WeightedAllocationWorkerSelectorAttachmentInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the WeightedAllocationWorkerSelectorAttachmentInternal. */ @Generated - public List getAllocations() { - return this.allocations; + public static WeightedAllocationWorkerSelectorAttachmentInternal fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + WeightedAllocationWorkerSelectorAttachmentInternal deserializedWeightedAllocationWorkerSelectorAttachmentInternal + = new WeightedAllocationWorkerSelectorAttachmentInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedWeightedAllocationWorkerSelectorAttachmentInternal + .setKind(WorkerSelectorAttachmentKind.fromString(reader.getString())); + } else if ("allocations".equals(fieldName)) { + List allocations + = reader.readArray(reader1 -> WorkerWeightedAllocationInternal.fromJson(reader1)); + deserializedWeightedAllocationWorkerSelectorAttachmentInternal.allocations = allocations; + } else { + reader.skipChildren(); + } + } + return deserializedWeightedAllocationWorkerSelectorAttachmentInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WorkerSelectorAttachmentInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WorkerSelectorAttachmentInternal.java index 86d4c6c034d2..5e5afe118f0a 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WorkerSelectorAttachmentInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WorkerSelectorAttachmentInternal.java @@ -3,34 +3,168 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.communication.jobrouter.models.WorkerSelectorAttachmentKind; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * An attachment which attaches worker selectors to a job. */ -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - include = JsonTypeInfo.As.PROPERTY, - property = "kind", - defaultImpl = WorkerSelectorAttachmentInternal.class) -@JsonTypeName("WorkerSelectorAttachmentInternal") -@JsonSubTypes({ - @JsonSubTypes.Type(name = "conditional", value = ConditionalWorkerSelectorAttachmentInternal.class), - @JsonSubTypes.Type(name = "passThrough", value = PassThroughWorkerSelectorAttachmentInternal.class), - @JsonSubTypes.Type(name = "ruleEngine", value = RuleEngineWorkerSelectorAttachmentInternal.class), - @JsonSubTypes.Type(name = "static", value = StaticWorkerSelectorAttachmentInternal.class), - @JsonSubTypes.Type(name = "weightedAllocation", value = WeightedAllocationWorkerSelectorAttachmentInternal.class) }) @Immutable -public class WorkerSelectorAttachmentInternal { +public class WorkerSelectorAttachmentInternal implements JsonSerializable { /** * Creates an instance of WorkerSelectorAttachmentInternal class. */ @Generated public WorkerSelectorAttachmentInternal() { + this.kind = WorkerSelectorAttachmentKind.fromString("WorkerSelectorAttachmentInternal"); + } + + /* + * The type discriminator describing a sub-type of WorkerSelectorAttachment. + */ + @Generated + private WorkerSelectorAttachmentKind kind; + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setWorkerSelectorAttachmentInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Get the kind property: The type discriminator describing a sub-type of WorkerSelectorAttachment. + * + * @return the kind value. + */ + @Generated + public WorkerSelectorAttachmentKind getKind() { + return this.kind; + } + + /** + * Set the kind property: The type discriminator describing a sub-type of WorkerSelectorAttachment. + * + * @param kind the kind value to set. + * @return the WorkerSelectorAttachmentInternal object itself. + */ + @Generated + WorkerSelectorAttachmentInternal setKind(WorkerSelectorAttachmentKind kind) { + this.kind = kind; + this.updatedProperties.add("kind"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("kind")) { + if (this.kind == null) { + jsonWriter.writeNullField("kind"); + } else { + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of WorkerSelectorAttachmentInternal from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of WorkerSelectorAttachmentInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the WorkerSelectorAttachmentInternal. + */ + @Generated + public static WorkerSelectorAttachmentInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("conditional".equals(discriminatorValue)) { + return ConditionalWorkerSelectorAttachmentInternal.fromJson(readerToUse.reset()); + } else if ("passThrough".equals(discriminatorValue)) { + return PassThroughWorkerSelectorAttachmentInternal.fromJson(readerToUse.reset()); + } else if ("ruleEngine".equals(discriminatorValue)) { + return RuleEngineWorkerSelectorAttachmentInternal.fromJson(readerToUse.reset()); + } else if ("static".equals(discriminatorValue)) { + return StaticWorkerSelectorAttachmentInternal.fromJson(readerToUse.reset()); + } else if ("weightedAllocation".equals(discriminatorValue)) { + return WeightedAllocationWorkerSelectorAttachmentInternal.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static WorkerSelectorAttachmentInternal fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + WorkerSelectorAttachmentInternal deserializedWorkerSelectorAttachmentInternal + = new WorkerSelectorAttachmentInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedWorkerSelectorAttachmentInternal.kind + = WorkerSelectorAttachmentKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedWorkerSelectorAttachmentInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WorkerWeightedAllocationInternal.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WorkerWeightedAllocationInternal.java index d6534515e1c7..2ccbf2032a4a 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WorkerWeightedAllocationInternal.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/models/WorkerWeightedAllocationInternal.java @@ -3,64 +3,170 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.implementation.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Contains the weight percentage and worker selectors to be applied if selected for weighted distributions. */ -@Immutable -public final class WorkerWeightedAllocationInternal { +@Fluent +public final class WorkerWeightedAllocationInternal implements JsonSerializable { /* * The percentage of this weight, expressed as a fraction of 1. */ @Generated - @JsonProperty(value = "weight") private double weight; /* * A collection of worker selectors that will be applied if this allocation is selected. */ @Generated - @JsonProperty(value = "workerSelectors") private List workerSelectors; + /** + * Get the weight property: The percentage of this weight, expressed as a fraction of 1. + * + * @return the weight value. + */ + @Generated + public double getWeight() { + return this.weight; + } + + /** + * Get the workerSelectors property: A collection of worker selectors that will be applied if this allocation is selected. + * + * @return the workerSelectors value. + */ + @Generated + public List getWorkerSelectors() { + return this.workerSelectors; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setWorkerWeightedAllocationInternalAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of WorkerWeightedAllocationInternal class. + */ + @Generated + public WorkerWeightedAllocationInternal() { + } + + /** + * Set the weight property: The percentage of this weight, expressed as a fraction of 1. + *

Required when create the resource.

* * @param weight the weight value to set. - * @param workerSelectors the workerSelectors value to set. + * @return the WorkerWeightedAllocationInternal object itself. */ @Generated - @JsonCreator - public WorkerWeightedAllocationInternal(@JsonProperty(value = "weight") double weight, - @JsonProperty(value = "workerSelectors") List workerSelectors) { + public WorkerWeightedAllocationInternal setWeight(double weight) { this.weight = weight; - this.workerSelectors = workerSelectors; + this.updatedProperties.add("weight"); + return this; } /** - * Get the weight property: The percentage of this weight, expressed as a fraction of 1. + * Set the workerSelectors property: A collection of worker selectors that will be applied if this allocation is selected. + *

Required when create the resource.

* - * @return the weight value. + * @param workerSelectors the workerSelectors value to set. + * @return the WorkerWeightedAllocationInternal object itself. */ @Generated - public double getWeight() { - return this.weight; + public WorkerWeightedAllocationInternal setWorkerSelectors(List workerSelectors) { + this.workerSelectors = workerSelectors; + this.updatedProperties.add("workerSelectors"); + return this; } /** - * Get the workerSelectors property: A collection of worker selectors that will be applied if this allocation is - * selected. + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeDoubleField("weight", this.weight); + jsonWriter.writeArrayField("workerSelectors", this.workerSelectors, + (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeDoubleField("weight", this.weight); + if (updatedProperties.contains("workerSelectors")) { + if (this.workerSelectors == null) { + jsonWriter.writeNullField("workerSelectors"); + } else { + jsonWriter.writeArrayField("workerSelectors", this.workerSelectors, + (writer, element) -> writer.writeJson(element)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of WorkerWeightedAllocationInternal from the JsonReader. * - * @return the workerSelectors value. + * @param jsonReader The JsonReader being read. + * @return An instance of WorkerWeightedAllocationInternal if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the WorkerWeightedAllocationInternal. */ @Generated - public List getWorkerSelectors() { - return this.workerSelectors; + public static WorkerWeightedAllocationInternal fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + WorkerWeightedAllocationInternal deserializedWorkerWeightedAllocationInternal + = new WorkerWeightedAllocationInternal(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("weight".equals(fieldName)) { + deserializedWorkerWeightedAllocationInternal.weight = reader.getDouble(); + } else if ("workerSelectors".equals(fieldName)) { + List workerSelectors + = reader.readArray(reader1 -> RouterWorkerSelectorInternal.fromJson(reader1)); + deserializedWorkerWeightedAllocationInternal.workerSelectors = workerSelectors; + } else { + reader.skipChildren(); + } + } + return deserializedWorkerWeightedAllocationInternal; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/AcceptJobOfferResult.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/AcceptJobOfferResult.java index fe7de5997a2c..a27a2ee7a524 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/AcceptJobOfferResult.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/AcceptJobOfferResult.java @@ -5,35 +5,35 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * Response containing ids for the worker, job, and assignment from an accepted offer. */ @Immutable -public final class AcceptJobOfferResult { +public final class AcceptJobOfferResult implements JsonSerializable { /* * Id of job assignment that assigns a worker that has accepted an offer to a job. */ @Generated - @JsonProperty(value = "assignmentId") - private String assignmentId; + private final String assignmentId; /* * Id of the job assigned. */ @Generated - @JsonProperty(value = "jobId") - private String jobId; + private final String jobId; /* * Id of the worker that has been assigned this job. */ @Generated - @JsonProperty(value = "workerId") - private String workerId; + private final String workerId; /** * Creates an instance of AcceptJobOfferResult class. @@ -43,9 +43,7 @@ public final class AcceptJobOfferResult { * @param workerId the workerId value to set. */ @Generated - @JsonCreator - private AcceptJobOfferResult(@JsonProperty(value = "assignmentId") String assignmentId, - @JsonProperty(value = "jobId") String jobId, @JsonProperty(value = "workerId") String workerId) { + private AcceptJobOfferResult(String assignmentId, String jobId, String workerId) { this.assignmentId = assignmentId; this.jobId = jobId; this.workerId = workerId; @@ -80,4 +78,48 @@ public String getJobId() { public String getWorkerId() { return this.workerId; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("assignmentId", this.assignmentId); + jsonWriter.writeStringField("jobId", this.jobId); + jsonWriter.writeStringField("workerId", this.workerId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of AcceptJobOfferResult from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of AcceptJobOfferResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the AcceptJobOfferResult. + */ + @Generated + public static AcceptJobOfferResult fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String assignmentId = null; + String jobId = null; + String workerId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("assignmentId".equals(fieldName)) { + assignmentId = reader.getString(); + } else if ("jobId".equals(fieldName)) { + jobId = reader.getString(); + } else if ("workerId".equals(fieldName)) { + workerId = reader.getString(); + } else { + reader.skipChildren(); + } + } + return new AcceptJobOfferResult(assignmentId, jobId, workerId); + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/DistributionModeKind.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/DistributionModeKind.java new file mode 100644 index 000000000000..9d70c2566e39 --- /dev/null +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/DistributionModeKind.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.communication.jobrouter.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Discriminators for supported distribution mode types. + */ +public final class DistributionModeKind extends ExpandableStringEnum { + + /** + * Discriminator value for BestWorkerMode. + */ + @Generated + public static final DistributionModeKind BEST_WORKER = fromString("bestWorker"); + + /** + * Discriminator value for LongestIdleMode. + */ + @Generated + public static final DistributionModeKind LONGEST_IDLE = fromString("longestIdle"); + + /** + * Discriminator value for RoundRobinMode. + */ + @Generated + public static final DistributionModeKind ROUND_ROBIN = fromString("roundRobin"); + + /** + * Creates a new instance of DistributionModeKind value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public DistributionModeKind() { + } + + /** + * Creates or finds a DistributionModeKind from its string representation. + * + * @param name a name to look for. + * @return the corresponding DistributionModeKind. + */ + @Generated + public static DistributionModeKind fromString(String name) { + return fromString(name, DistributionModeKind.class); + } + + /** + * Gets known DistributionModeKind values. + * + * @return known DistributionModeKind values. + */ + @Generated + public static Collection values() { + return values(DistributionModeKind.class); + } +} diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/ExpressionRouterRuleLanguage.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/ExpressionRouterRuleLanguage.java index 36a8fa1a692d..c0fe5054dddd 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/ExpressionRouterRuleLanguage.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/ExpressionRouterRuleLanguage.java @@ -5,7 +5,6 @@ import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; -import com.fasterxml.jackson.annotation.JsonCreator; import java.util.Collection; /** @@ -36,7 +35,6 @@ public ExpressionRouterRuleLanguage() { * @return the corresponding ExpressionRouterRuleLanguage. */ @Generated - @JsonCreator public static ExpressionRouterRuleLanguage fromString(String name) { return fromString(name, ExpressionRouterRuleLanguage.class); } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/FunctionRouterRuleCredential.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/FunctionRouterRuleCredential.java index d1a23e6d3e29..28400bfaf695 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/FunctionRouterRuleCredential.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/FunctionRouterRuleCredential.java @@ -3,35 +3,39 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Credentials used to access Azure function rule. */ @Fluent -public final class FunctionRouterRuleCredential { +public final class FunctionRouterRuleCredential implements JsonSerializable { /* * Access key scoped to a particular function. */ @Generated - @JsonProperty(value = "functionKey") private String functionKey; /* * Access key scoped to a Azure Function app. This key grants access to all functions under the app. */ @Generated - @JsonProperty(value = "appKey") private String appKey; /* * Client id, when AppKey is provided In context of Azure function, this is usually the name of the key. */ @Generated - @JsonProperty(value = "clientId") private String clientId; /** @@ -60,12 +64,12 @@ public String getFunctionKey() { @Generated public FunctionRouterRuleCredential setFunctionKey(String functionKey) { this.functionKey = functionKey; + this.updatedProperties.add("functionKey"); return this; } /** - * Get the appKey property: Access key scoped to a Azure Function app. This key grants access to all functions - * under the app. + * Get the appKey property: Access key scoped to a Azure Function app. This key grants access to all functions under the app. * * @return the appKey value. */ @@ -75,8 +79,7 @@ public String getAppKey() { } /** - * Set the appKey property: Access key scoped to a Azure Function app. This key grants access to all functions - * under the app. + * Set the appKey property: Access key scoped to a Azure Function app. This key grants access to all functions under the app. * * @param appKey the appKey value to set. * @return the FunctionRouterRuleCredential object itself. @@ -84,12 +87,12 @@ public String getAppKey() { @Generated public FunctionRouterRuleCredential setAppKey(String appKey) { this.appKey = appKey; + this.updatedProperties.add("appKey"); return this; } /** - * Get the clientId property: Client id, when AppKey is provided In context of Azure function, this is usually the - * name of the key. + * Get the clientId property: Client id, when AppKey is provided In context of Azure function, this is usually the name of the key. * * @return the clientId value. */ @@ -99,8 +102,7 @@ public String getClientId() { } /** - * Set the clientId property: Client id, when AppKey is provided In context of Azure function, this is usually the - * name of the key. + * Set the clientId property: Client id, when AppKey is provided In context of Azure function, this is usually the name of the key. * * @param clientId the clientId value to set. * @return the FunctionRouterRuleCredential object itself. @@ -108,6 +110,100 @@ public String getClientId() { @Generated public FunctionRouterRuleCredential setClientId(String clientId) { this.clientId = clientId; + this.updatedProperties.add("clientId"); return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setFunctionRouterRuleCredentialAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("functionKey", this.functionKey); + jsonWriter.writeStringField("appKey", this.appKey); + jsonWriter.writeStringField("clientId", this.clientId); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("functionKey")) { + if (this.functionKey == null) { + jsonWriter.writeNullField("functionKey"); + } else { + jsonWriter.writeStringField("functionKey", this.functionKey); + } + } + if (updatedProperties.contains("appKey")) { + if (this.appKey == null) { + jsonWriter.writeNullField("appKey"); + } else { + jsonWriter.writeStringField("appKey", this.appKey); + } + } + if (updatedProperties.contains("clientId")) { + if (this.clientId == null) { + jsonWriter.writeNullField("clientId"); + } else { + jsonWriter.writeStringField("clientId", this.clientId); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of FunctionRouterRuleCredential from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of FunctionRouterRuleCredential if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the FunctionRouterRuleCredential. + */ + @Generated + public static FunctionRouterRuleCredential fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + FunctionRouterRuleCredential deserializedFunctionRouterRuleCredential = new FunctionRouterRuleCredential(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("functionKey".equals(fieldName)) { + deserializedFunctionRouterRuleCredential.functionKey = reader.getString(); + } else if ("appKey".equals(fieldName)) { + deserializedFunctionRouterRuleCredential.appKey = reader.getString(); + } else if ("clientId".equals(fieldName)) { + deserializedFunctionRouterRuleCredential.clientId = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedFunctionRouterRuleCredential; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/JobMatchingModeKind.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/JobMatchingModeKind.java new file mode 100644 index 000000000000..f34625094741 --- /dev/null +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/JobMatchingModeKind.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.communication.jobrouter.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Discriminators for supported matching mode types. + */ +public final class JobMatchingModeKind extends ExpandableStringEnum { + + /** + * Discriminator value for QueueAndMatchMode. + */ + @Generated + public static final JobMatchingModeKind QUEUE_AND_MATCH = fromString("queueAndMatch"); + + /** + * Discriminator value for ScheduleAndSuspendMode. + */ + @Generated + public static final JobMatchingModeKind SCHEDULE_AND_SUSPEND = fromString("scheduleAndSuspend"); + + /** + * Discriminator value for SuspendMode. + */ + @Generated + public static final JobMatchingModeKind SUSPEND = fromString("suspend"); + + /** + * Creates a new instance of JobMatchingModeKind value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public JobMatchingModeKind() { + } + + /** + * Creates or finds a JobMatchingModeKind from its string representation. + * + * @param name a name to look for. + * @return the corresponding JobMatchingModeKind. + */ + @Generated + public static JobMatchingModeKind fromString(String name) { + return fromString(name, JobMatchingModeKind.class); + } + + /** + * Gets known JobMatchingModeKind values. + * + * @return known JobMatchingModeKind values. + */ + @Generated + public static Collection values() { + return values(JobMatchingModeKind.class); + } +} diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/LabelOperator.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/LabelOperator.java index ef347797537a..45af66f8a1e1 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/LabelOperator.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/LabelOperator.java @@ -5,7 +5,6 @@ import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; -import com.fasterxml.jackson.annotation.JsonCreator; import java.util.Collection; /** @@ -54,7 +53,6 @@ public LabelOperator() { * @return the corresponding LabelOperator. */ @Generated - @JsonCreator public static LabelOperator fromString(String name) { return fromString(name, LabelOperator.class); } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/OAuth2WebhookClientCredential.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/OAuth2WebhookClientCredential.java index aac455f5a783..23d88a3ecec3 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/OAuth2WebhookClientCredential.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/OAuth2WebhookClientCredential.java @@ -3,29 +3,33 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** - * OAuth2.0 Credentials used to Contoso's Authorization server. Reference: - * https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/. + * OAuth2.0 Credentials used to Contoso's Authorization server. Reference: https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/. */ @Fluent -public final class OAuth2WebhookClientCredential { +public final class OAuth2WebhookClientCredential implements JsonSerializable { /* * ClientId for Contoso Authorization server. */ @Generated - @JsonProperty(value = "clientId") private String clientId; /* * Client secret for Contoso Authorization server. */ @Generated - @JsonProperty(value = "clientSecret") private String clientSecret; /** @@ -54,6 +58,7 @@ public String getClientId() { @Generated public OAuth2WebhookClientCredential setClientId(String clientId) { this.clientId = clientId; + this.updatedProperties.add("clientId"); return this; } @@ -76,6 +81,91 @@ public String getClientSecret() { @Generated public OAuth2WebhookClientCredential setClientSecret(String clientSecret) { this.clientSecret = clientSecret; + this.updatedProperties.add("clientSecret"); return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setOAuth2WebhookClientCredentialAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("clientId", this.clientId); + jsonWriter.writeStringField("clientSecret", this.clientSecret); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("clientId")) { + if (this.clientId == null) { + jsonWriter.writeNullField("clientId"); + } else { + jsonWriter.writeStringField("clientId", this.clientId); + } + } + if (updatedProperties.contains("clientSecret")) { + if (this.clientSecret == null) { + jsonWriter.writeNullField("clientSecret"); + } else { + jsonWriter.writeStringField("clientSecret", this.clientSecret); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of OAuth2WebhookClientCredential from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of OAuth2WebhookClientCredential if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the OAuth2WebhookClientCredential. + */ + @Generated + public static OAuth2WebhookClientCredential fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + OAuth2WebhookClientCredential deserializedOAuth2WebhookClientCredential + = new OAuth2WebhookClientCredential(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("clientId".equals(fieldName)) { + deserializedOAuth2WebhookClientCredential.clientId = reader.getString(); + } else if ("clientSecret".equals(fieldName)) { + deserializedOAuth2WebhookClientCredential.clientSecret = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedOAuth2WebhookClientCredential; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/QueueSelectorAttachmentKind.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/QueueSelectorAttachmentKind.java new file mode 100644 index 000000000000..4acc27390954 --- /dev/null +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/QueueSelectorAttachmentKind.java @@ -0,0 +1,75 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.communication.jobrouter.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Discriminators for supported queue selector attachment types. + */ +public final class QueueSelectorAttachmentKind extends ExpandableStringEnum { + + /** + * Discriminator value for ConditionalQueueSelectorAttachment. + */ + @Generated + public static final QueueSelectorAttachmentKind CONDITIONAL = fromString("conditional"); + + /** + * Discriminator value for PassThroughQueueSelectorAttachment. + */ + @Generated + public static final QueueSelectorAttachmentKind PASS_THROUGH = fromString("passThrough"); + + /** + * Discriminator value for RuleEngineQueueSelectorAttachment. + */ + @Generated + public static final QueueSelectorAttachmentKind RULE_ENGINE = fromString("ruleEngine"); + + /** + * Discriminator value for StaticQueueSelectorAttachment. + */ + @Generated + public static final QueueSelectorAttachmentKind STATIC = fromString("static"); + + /** + * Discriminator value for WeightedAllocationQueueSelectorAttachment. + */ + @Generated + public static final QueueSelectorAttachmentKind WEIGHTED_ALLOCATION = fromString("weightedAllocation"); + + /** + * Creates a new instance of QueueSelectorAttachmentKind value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public QueueSelectorAttachmentKind() { + } + + /** + * Creates or finds a QueueSelectorAttachmentKind from its string representation. + * + * @param name a name to look for. + * @return the corresponding QueueSelectorAttachmentKind. + */ + @Generated + public static QueueSelectorAttachmentKind fromString(String name) { + return fromString(name, QueueSelectorAttachmentKind.class); + } + + /** + * Gets known QueueSelectorAttachmentKind values. + * + * @return known QueueSelectorAttachmentKind values. + */ + @Generated + public static Collection values() { + return values(QueueSelectorAttachmentKind.class); + } +} diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterChannel.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterChannel.java index 90d04ac485d6..d130a151da74 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterChannel.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterChannel.java @@ -3,52 +3,41 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; /** * Represents the capacity a job in this channel will consume from a worker. */ @Fluent -public final class RouterChannel { +public final class RouterChannel implements JsonSerializable { /* * Id of a channel. */ @Generated - @JsonProperty(value = "channelId") private String channelId; /* * The amount of capacity that an instance of a job of this channel will consume of the total worker capacity. */ @Generated - @JsonProperty(value = "capacityCostPerJob") private int capacityCostPerJob; /* * The maximum number of jobs that can be supported concurrently for this channel. */ @Generated - @JsonProperty(value = "maxNumberOfJobs") private Integer maxNumberOfJobs; - /** - * Creates an instance of RouterChannel class. - * - * @param channelId the channelId value to set. - * @param capacityCostPerJob the capacityCostPerJob value to set. - */ - @Generated - @JsonCreator - public RouterChannel(@JsonProperty(value = "channelId") String channelId, - @JsonProperty(value = "capacityCostPerJob") int capacityCostPerJob) { - this.channelId = channelId; - this.capacityCostPerJob = capacityCostPerJob; - } - /** * Get the channelId property: Id of a channel. * @@ -60,8 +49,7 @@ public String getChannelId() { } /** - * Get the capacityCostPerJob property: The amount of capacity that an instance of a job of this channel will - * consume of the total worker capacity. + * Get the capacityCostPerJob property: The amount of capacity that an instance of a job of this channel will consume of the total worker capacity. * * @return the capacityCostPerJob value. */ @@ -71,8 +59,7 @@ public int getCapacityCostPerJob() { } /** - * Get the maxNumberOfJobs property: The maximum number of jobs that can be supported concurrently for this - * channel. + * Get the maxNumberOfJobs property: The maximum number of jobs that can be supported concurrently for this channel. * * @return the maxNumberOfJobs value. */ @@ -82,8 +69,7 @@ public Integer getMaxNumberOfJobs() { } /** - * Set the maxNumberOfJobs property: The maximum number of jobs that can be supported concurrently for this - * channel. + * Set the maxNumberOfJobs property: The maximum number of jobs that can be supported concurrently for this channel. * * @param maxNumberOfJobs the maxNumberOfJobs value to set. * @return the RouterChannel object itself. @@ -91,6 +77,129 @@ public Integer getMaxNumberOfJobs() { @Generated public RouterChannel setMaxNumberOfJobs(Integer maxNumberOfJobs) { this.maxNumberOfJobs = maxNumberOfJobs; + this.updatedProperties.add("maxNumberOfJobs"); + return this; + } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRouterChannelAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Creates an instance of RouterChannel class. + */ + @Generated + public RouterChannel() { + } + + /** + * Set the channelId property: Id of a channel. + *

Required when create the resource.

+ * + * @param channelId the channelId value to set. + * @return the RouterChannel object itself. + */ + @Generated + public RouterChannel setChannelId(String channelId) { + this.channelId = channelId; + this.updatedProperties.add("channelId"); return this; } + + /** + * Set the capacityCostPerJob property: The amount of capacity that an instance of a job of this channel will consume of the total worker capacity. + *

Required when create the resource.

+ * + * @param capacityCostPerJob the capacityCostPerJob value to set. + * @return the RouterChannel object itself. + */ + @Generated + public RouterChannel setCapacityCostPerJob(int capacityCostPerJob) { + this.capacityCostPerJob = capacityCostPerJob; + this.updatedProperties.add("capacityCostPerJob"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("channelId", this.channelId); + jsonWriter.writeIntField("capacityCostPerJob", this.capacityCostPerJob); + jsonWriter.writeNumberField("maxNumberOfJobs", this.maxNumberOfJobs); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("channelId")) { + if (this.channelId == null) { + jsonWriter.writeNullField("channelId"); + } else { + jsonWriter.writeStringField("channelId", this.channelId); + } + } + jsonWriter.writeIntField("capacityCostPerJob", this.capacityCostPerJob); + if (updatedProperties.contains("maxNumberOfJobs")) { + if (this.maxNumberOfJobs == null) { + jsonWriter.writeNullField("maxNumberOfJobs"); + } else { + jsonWriter.writeNumberField("maxNumberOfJobs", this.maxNumberOfJobs); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterChannel from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RouterChannel if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RouterChannel. + */ + @Generated + public static RouterChannel fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RouterChannel deserializedRouterChannel = new RouterChannel(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("channelId".equals(fieldName)) { + deserializedRouterChannel.channelId = reader.getString(); + } else if ("capacityCostPerJob".equals(fieldName)) { + deserializedRouterChannel.capacityCostPerJob = reader.getInt(); + } else if ("maxNumberOfJobs".equals(fieldName)) { + deserializedRouterChannel.maxNumberOfJobs = reader.getNullable(JsonReader::getInt); + } else { + reader.skipChildren(); + } + } + return deserializedRouterChannel; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobAssignment.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobAssignment.java index ce42ce058118..08a23e422559 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobAssignment.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobAssignment.java @@ -3,51 +3,53 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashSet; +import java.util.Set; /** * Assignment details of a job to a worker. */ @Immutable -public final class RouterJobAssignment { +public final class RouterJobAssignment implements JsonSerializable { /* * Id of a job assignment. */ @Generated - @JsonProperty(value = "assignmentId", access = JsonProperty.Access.WRITE_ONLY) private String assignmentId; /* * Id of the Worker assigned to the job. */ @Generated - @JsonProperty(value = "workerId") private String workerId; /* * Timestamp when the job was assigned to a worker in UTC. */ @Generated - @JsonProperty(value = "assignedAt") private OffsetDateTime assignedAt; /* * Timestamp when the job was marked as completed after being assigned in UTC. */ @Generated - @JsonProperty(value = "completedAt") private OffsetDateTime completedAt; /* * Timestamp when the job was marked as closed after being completed in UTC. */ @Generated - @JsonProperty(value = "closedAt") private OffsetDateTime closedAt; /** @@ -100,14 +102,132 @@ public OffsetDateTime getClosedAt() { return this.closedAt; } + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRouterJobAssignmentAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of RouterJobAssignment class. + */ + @Generated + private RouterJobAssignment() { + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("workerId", this.workerId); + jsonWriter.writeStringField("assignedAt", + this.assignedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.assignedAt)); + jsonWriter.writeStringField("completedAt", + this.completedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.completedAt)); + jsonWriter.writeStringField("closedAt", + this.closedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.closedAt)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("workerId")) { + if (this.workerId == null) { + jsonWriter.writeNullField("workerId"); + } else { + jsonWriter.writeStringField("workerId", this.workerId); + } + } + if (updatedProperties.contains("assignedAt")) { + if (this.assignedAt == null) { + jsonWriter.writeNullField("assignedAt"); + } else { + jsonWriter.writeStringField("assignedAt", + this.assignedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.assignedAt)); + } + } + if (updatedProperties.contains("completedAt")) { + if (this.completedAt == null) { + jsonWriter.writeNullField("completedAt"); + } else { + jsonWriter.writeStringField("completedAt", + this.completedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.completedAt)); + } + } + if (updatedProperties.contains("closedAt")) { + if (this.closedAt == null) { + jsonWriter.writeNullField("closedAt"); + } else { + jsonWriter.writeStringField("closedAt", + this.closedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.closedAt)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterJobAssignment from the JsonReader. * - * @param assignedAt the assignedAt value to set. + * @param jsonReader The JsonReader being read. + * @return An instance of RouterJobAssignment if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RouterJobAssignment. */ @Generated - @JsonCreator - private RouterJobAssignment(@JsonProperty(value = "assignedAt") OffsetDateTime assignedAt) { - this.assignedAt = assignedAt; + public static RouterJobAssignment fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String assignmentId = null; + String workerId = null; + OffsetDateTime assignedAt = null; + OffsetDateTime completedAt = null; + OffsetDateTime closedAt = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("assignmentId".equals(fieldName)) { + assignmentId = reader.getString(); + } else if ("workerId".equals(fieldName)) { + workerId = reader.getString(); + } else if ("assignedAt".equals(fieldName)) { + assignedAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())); + } else if ("completedAt".equals(fieldName)) { + completedAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())); + } else if ("closedAt".equals(fieldName)) { + closedAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())); + } else { + reader.skipChildren(); + } + } + RouterJobAssignment deserializedRouterJobAssignment = new RouterJobAssignment(); + deserializedRouterJobAssignment.assignmentId = assignmentId; + deserializedRouterJobAssignment.workerId = workerId; + deserializedRouterJobAssignment.assignedAt = assignedAt; + deserializedRouterJobAssignment.completedAt = completedAt; + deserializedRouterJobAssignment.closedAt = closedAt; + return deserializedRouterJobAssignment; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobNote.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobNote.java index d34762d6a4c3..f665c0d7482a 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobNote.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobNote.java @@ -3,15 +3,25 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashSet; import java.util.Objects; +import java.util.Set; /** * A note attached to a job. */ @Fluent -public final class RouterJobNote { +public final class RouterJobNote implements JsonSerializable { /** * Creates an instance of RouterJobNote class. @@ -60,4 +70,104 @@ public OffsetDateTime getAddedAt() { public String getMessage() { return message; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRouterJobNoteAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Set the message property: The message contained in the note. + *

Required when create the resource.

+ * + * @param message the message value to set. + * @return the RouterJobNote object itself. + */ + @Generated + public RouterJobNote setMessage(String message) { + this.message = message; + this.updatedProperties.add("message"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("message", this.message); + jsonWriter.writeStringField("addedAt", + this.addedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.addedAt)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("message")) { + if (this.message == null) { + jsonWriter.writeNullField("message"); + } else { + jsonWriter.writeStringField("message", this.message); + } + } + if (updatedProperties.contains("addedAt")) { + if (this.addedAt == null) { + jsonWriter.writeNullField("addedAt"); + } else { + jsonWriter.writeStringField("addedAt", + this.addedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.addedAt)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterJobNote from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RouterJobNote if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RouterJobNote. + */ + @Generated + public static RouterJobNote fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RouterJobNote deserializedRouterJobNote = new RouterJobNote(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("message".equals(fieldName)) { + deserializedRouterJobNote.message = reader.getString(); + } else if ("addedAt".equals(fieldName)) { + deserializedRouterJobNote.addedAt + = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())); + } else { + reader.skipChildren(); + } + } + return deserializedRouterJobNote; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobOffer.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobOffer.java index 81a50b474939..72c96783805f 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobOffer.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobOffer.java @@ -3,51 +3,53 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashSet; +import java.util.Set; /** * An offer of a job to a worker. */ @Immutable -public final class RouterJobOffer { +public final class RouterJobOffer implements JsonSerializable { /* * Id of an offer. */ @Generated - @JsonProperty(value = "offerId", access = JsonProperty.Access.WRITE_ONLY) private String offerId; /* * Id of the job. */ @Generated - @JsonProperty(value = "jobId") private String jobId; /* * The capacity cost consumed by the job offer. */ @Generated - @JsonProperty(value = "capacityCost") private int capacityCost; /* * Timestamp when the offer was created in UTC. */ @Generated - @JsonProperty(value = "offeredAt") private OffsetDateTime offeredAt; /* * Timestamp when the offer will expire in UTC. */ @Generated - @JsonProperty(value = "expiresAt") private OffsetDateTime expiresAt; /** @@ -100,17 +102,124 @@ public OffsetDateTime getExpiresAt() { return this.expiresAt; } + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRouterJobOfferAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + /** * Creates an instance of RouterJobOffer class. + */ + @Generated + private RouterJobOffer() { + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("jobId", this.jobId); + jsonWriter.writeIntField("capacityCost", this.capacityCost); + jsonWriter.writeStringField("offeredAt", + this.offeredAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.offeredAt)); + jsonWriter.writeStringField("expiresAt", + this.expiresAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.expiresAt)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("jobId")) { + if (this.jobId == null) { + jsonWriter.writeNullField("jobId"); + } else { + jsonWriter.writeStringField("jobId", this.jobId); + } + } + jsonWriter.writeIntField("capacityCost", this.capacityCost); + if (updatedProperties.contains("offeredAt")) { + if (this.offeredAt == null) { + jsonWriter.writeNullField("offeredAt"); + } else { + jsonWriter.writeStringField("offeredAt", + this.offeredAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.offeredAt)); + } + } + if (updatedProperties.contains("expiresAt")) { + if (this.expiresAt == null) { + jsonWriter.writeNullField("expiresAt"); + } else { + jsonWriter.writeStringField("expiresAt", + this.expiresAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.expiresAt)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterJobOffer from the JsonReader. * - * @param jobId the jobId value to set. - * @param capacityCost the capacityCost value to set. + * @param jsonReader The JsonReader being read. + * @return An instance of RouterJobOffer if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RouterJobOffer. */ @Generated - @JsonCreator - private RouterJobOffer(@JsonProperty(value = "jobId") String jobId, - @JsonProperty(value = "capacityCost") int capacityCost) { - this.jobId = jobId; - this.capacityCost = capacityCost; + public static RouterJobOffer fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String offerId = null; + String jobId = null; + int capacityCost = 0; + OffsetDateTime offeredAt = null; + OffsetDateTime expiresAt = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("offerId".equals(fieldName)) { + offerId = reader.getString(); + } else if ("jobId".equals(fieldName)) { + jobId = reader.getString(); + } else if ("capacityCost".equals(fieldName)) { + capacityCost = reader.getInt(); + } else if ("offeredAt".equals(fieldName)) { + offeredAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())); + } else if ("expiresAt".equals(fieldName)) { + expiresAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())); + } else { + reader.skipChildren(); + } + } + RouterJobOffer deserializedRouterJobOffer = new RouterJobOffer(); + deserializedRouterJobOffer.offerId = offerId; + deserializedRouterJobOffer.jobId = jobId; + deserializedRouterJobOffer.capacityCost = capacityCost; + deserializedRouterJobOffer.offeredAt = offeredAt; + deserializedRouterJobOffer.expiresAt = expiresAt; + return deserializedRouterJobOffer; + }); } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobPositionDetails.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobPositionDetails.java index 61a70bd154d2..660f6afdf414 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobPositionDetails.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobPositionDetails.java @@ -5,49 +5,47 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * Position and estimated wait time for a job. */ @Immutable -public final class RouterJobPositionDetails { +public final class RouterJobPositionDetails implements JsonSerializable { /* * Id of the job these details are about. */ @Generated - @JsonProperty(value = "jobId") - private String jobId; + private final String jobId; /* * Position of the job in question within that queue. */ @Generated - @JsonProperty(value = "position") - private int position; + private final int position; /* * Id of the queue this job is enqueued in. */ @Generated - @JsonProperty(value = "queueId") - private String queueId; + private final String queueId; /* * Length of the queue: total number of enqueued jobs. */ @Generated - @JsonProperty(value = "queueLength") - private int queueLength; + private final int queueLength; /* * Estimated wait time of the job rounded up to the nearest minute. */ @Generated - @JsonProperty(value = "estimatedWaitTimeMinutes") - private double estimatedWaitTimeMinutes; + private final double estimatedWaitTimeMinutes; /** * Creates an instance of RouterJobPositionDetails class. @@ -59,11 +57,8 @@ public final class RouterJobPositionDetails { * @param estimatedWaitTimeMinutes the estimatedWaitTimeMinutes value to set. */ @Generated - @JsonCreator - private RouterJobPositionDetails(@JsonProperty(value = "jobId") String jobId, - @JsonProperty(value = "position") int position, @JsonProperty(value = "queueId") String queueId, - @JsonProperty(value = "queueLength") int queueLength, - @JsonProperty(value = "estimatedWaitTimeMinutes") double estimatedWaitTimeMinutes) { + private RouterJobPositionDetails(String jobId, int position, String queueId, int queueLength, + double estimatedWaitTimeMinutes) { this.jobId = jobId; this.position = position; this.queueId = queueId; @@ -120,4 +115,56 @@ public int getQueueLength() { public double getEstimatedWaitTimeMinutes() { return this.estimatedWaitTimeMinutes; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("jobId", this.jobId); + jsonWriter.writeIntField("position", this.position); + jsonWriter.writeStringField("queueId", this.queueId); + jsonWriter.writeIntField("queueLength", this.queueLength); + jsonWriter.writeDoubleField("estimatedWaitTimeMinutes", this.estimatedWaitTimeMinutes); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterJobPositionDetails from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RouterJobPositionDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RouterJobPositionDetails. + */ + @Generated + public static RouterJobPositionDetails fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String jobId = null; + int position = 0; + String queueId = null; + int queueLength = 0; + double estimatedWaitTimeMinutes = 0.0; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("jobId".equals(fieldName)) { + jobId = reader.getString(); + } else if ("position".equals(fieldName)) { + position = reader.getInt(); + } else if ("queueId".equals(fieldName)) { + queueId = reader.getString(); + } else if ("queueLength".equals(fieldName)) { + queueLength = reader.getInt(); + } else if ("estimatedWaitTimeMinutes".equals(fieldName)) { + estimatedWaitTimeMinutes = reader.getDouble(); + } else { + reader.skipChildren(); + } + } + return new RouterJobPositionDetails(jobId, position, queueId, queueLength, estimatedWaitTimeMinutes); + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobStatus.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobStatus.java index 8fa5821901b7..e6bd28abc69c 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobStatus.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobStatus.java @@ -5,7 +5,6 @@ import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; -import com.fasterxml.jackson.annotation.JsonCreator; import java.util.Collection; /** @@ -102,7 +101,6 @@ public RouterJobStatus() { * @return the corresponding RouterJobStatus. */ @Generated - @JsonCreator public static RouterJobStatus fromString(String name) { return fromString(name, RouterJobStatus.class); } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobStatusSelector.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobStatusSelector.java index 7830a5091d54..4a0efa315075 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobStatusSelector.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterJobStatusSelector.java @@ -5,7 +5,6 @@ import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; -import com.fasterxml.jackson.annotation.JsonCreator; import java.util.Collection; /** @@ -92,8 +91,7 @@ public final class RouterJobStatusSelector extends ExpandableStringEnum { + + /** + * Discriminator value for DirectMapRouterRule. + */ + @Generated + public static final RouterRuleKind DIRECT_MAP = fromString("directMap"); + + /** + * Discriminator value for ExpressionRouterRule. + */ + @Generated + public static final RouterRuleKind EXPRESSION = fromString("expression"); + + /** + * Discriminator value for FunctionRouterRule. + */ + @Generated + public static final RouterRuleKind FUNCTION = fromString("function"); + + /** + * Discriminator value for StaticRouterRule. + */ + @Generated + public static final RouterRuleKind STATIC = fromString("static"); + + /** + * Discriminator value for WebhookRouterRule. + */ + @Generated + public static final RouterRuleKind WEBHOOK = fromString("webhook"); + + /** + * Creates a new instance of RouterRuleKind value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RouterRuleKind() { + } + + /** + * Creates or finds a RouterRuleKind from its string representation. + * + * @param name a name to look for. + * @return the corresponding RouterRuleKind. + */ + @Generated + public static RouterRuleKind fromString(String name) { + return fromString(name, RouterRuleKind.class); + } + + /** + * Gets known RouterRuleKind values. + * + * @return known RouterRuleKind values. + */ + @Generated + public static Collection values() { + return values(RouterRuleKind.class); + } +} diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerAssignment.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerAssignment.java index 47826ed98569..a4fffee710b6 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerAssignment.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerAssignment.java @@ -3,65 +3,49 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashSet; +import java.util.Set; /** * The assignment for a worker to a job. */ @Immutable -public final class RouterWorkerAssignment { +public final class RouterWorkerAssignment implements JsonSerializable { /* * Id of the assignment. */ @Generated - @JsonProperty(value = "assignmentId") private String assignmentId; /* * Id of the job assigned. */ @Generated - @JsonProperty(value = "jobId") private String jobId; /* * The amount of capacity this assignment has consumed on the worker. */ @Generated - @JsonProperty(value = "capacityCost") private int capacityCost; /* * The assignment time of the job in UTC. */ @Generated - @JsonProperty(value = "assignedAt") private OffsetDateTime assignedAt; - /** - * Creates an instance of RouterWorkerAssignment class. - * - * @param assignmentId the assignmentId value to set. - * @param jobId the jobId value to set. - * @param capacityCost the capacityCost value to set. - * @param assignedAt the assignedAt value to set. - */ - @Generated - @JsonCreator - private RouterWorkerAssignment(@JsonProperty(value = "assignmentId") String assignmentId, - @JsonProperty(value = "jobId") String jobId, @JsonProperty(value = "capacityCost") int capacityCost, - @JsonProperty(value = "assignedAt") OffsetDateTime assignedAt) { - this.assignmentId = assignmentId; - this.jobId = jobId; - this.capacityCost = capacityCost; - this.assignedAt = assignedAt; - } - /** * Get the assignmentId property: Id of the assignment. * @@ -101,4 +85,111 @@ public int getCapacityCost() { public OffsetDateTime getAssignedAt() { return this.assignedAt; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setRouterWorkerAssignmentAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * Creates an instance of RouterWorkerAssignment class. + */ + @Generated + private RouterWorkerAssignment() { + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("assignmentId", this.assignmentId); + jsonWriter.writeStringField("jobId", this.jobId); + jsonWriter.writeIntField("capacityCost", this.capacityCost); + jsonWriter.writeStringField("assignedAt", + this.assignedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.assignedAt)); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("assignmentId")) { + if (this.assignmentId == null) { + jsonWriter.writeNullField("assignmentId"); + } else { + jsonWriter.writeStringField("assignmentId", this.assignmentId); + } + } + if (updatedProperties.contains("jobId")) { + if (this.jobId == null) { + jsonWriter.writeNullField("jobId"); + } else { + jsonWriter.writeStringField("jobId", this.jobId); + } + } + jsonWriter.writeIntField("capacityCost", this.capacityCost); + if (updatedProperties.contains("assignedAt")) { + if (this.assignedAt == null) { + jsonWriter.writeNullField("assignedAt"); + } else { + jsonWriter.writeStringField("assignedAt", + this.assignedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.assignedAt)); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RouterWorkerAssignment from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RouterWorkerAssignment if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RouterWorkerAssignment. + */ + @Generated + public static RouterWorkerAssignment fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RouterWorkerAssignment deserializedRouterWorkerAssignment = new RouterWorkerAssignment(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("assignmentId".equals(fieldName)) { + deserializedRouterWorkerAssignment.assignmentId = reader.getString(); + } else if ("jobId".equals(fieldName)) { + deserializedRouterWorkerAssignment.jobId = reader.getString(); + } else if ("capacityCost".equals(fieldName)) { + deserializedRouterWorkerAssignment.capacityCost = reader.getInt(); + } else if ("assignedAt".equals(fieldName)) { + deserializedRouterWorkerAssignment.assignedAt + = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())); + } else { + reader.skipChildren(); + } + } + return deserializedRouterWorkerAssignment; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerSelectorStatus.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerSelectorStatus.java index 33cb77787d67..79684cc615ea 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerSelectorStatus.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerSelectorStatus.java @@ -5,7 +5,6 @@ import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; -import com.fasterxml.jackson.annotation.JsonCreator; import java.util.Collection; /** @@ -42,7 +41,6 @@ public RouterWorkerSelectorStatus() { * @return the corresponding RouterWorkerSelectorStatus. */ @Generated - @JsonCreator public static RouterWorkerSelectorStatus fromString(String name) { return fromString(name, RouterWorkerSelectorStatus.class); } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerState.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerState.java index 22e3c5b97bb3..cfd384deb107 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerState.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerState.java @@ -5,7 +5,6 @@ import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; -import com.fasterxml.jackson.annotation.JsonCreator; import java.util.Collection; /** @@ -48,7 +47,6 @@ public RouterWorkerState() { * @return the corresponding RouterWorkerState. */ @Generated - @JsonCreator public static RouterWorkerState fromString(String name) { return fromString(name, RouterWorkerState.class); } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerStateSelector.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerStateSelector.java index 083483f14523..a194d1ac16e6 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerStateSelector.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/RouterWorkerStateSelector.java @@ -5,7 +5,6 @@ import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; -import com.fasterxml.jackson.annotation.JsonCreator; import java.util.Collection; /** @@ -54,7 +53,6 @@ public RouterWorkerStateSelector() { * @return the corresponding RouterWorkerStateSelector. */ @Generated - @JsonCreator public static RouterWorkerStateSelector fromString(String name) { return fromString(name, RouterWorkerStateSelector.class); } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/ScoringRuleOptions.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/ScoringRuleOptions.java index 21b3c42885b1..e8252553bf39 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/ScoringRuleOptions.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/ScoringRuleOptions.java @@ -3,39 +3,40 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.jobrouter.models; +import com.azure.communication.jobrouter.implementation.JsonMergePatchHelper; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Encapsulates all options that can be passed as parameters for scoring rule with BestWorkerMode. */ @Fluent -public final class ScoringRuleOptions { +public final class ScoringRuleOptions implements JsonSerializable { /* * Set batch size when 'isBatchScoringEnabled' is set to true. Defaults to 20 if not configured. */ @Generated - @JsonProperty(value = "batchSize") private Integer batchSize; /* - * List of extra parameters from a job that will be sent as part of the payload to scoring rule. If not set, a - * job's labels (sent in the payload as `job`) and a job's worker selectors (sent in the payload as `selectors`) - * are added to the payload of the scoring rule by default. Note: Worker labels are always sent with scoring - * payload. + * List of extra parameters from a job that will be sent as part of the payload to scoring rule. If not set, a job's labels (sent in the payload as `job`) and a job's worker selectors (sent in the payload as `selectors`) are added to the payload of the scoring rule by default. Note: Worker labels are always sent with scoring payload. */ @Generated - @JsonProperty(value = "scoringParameters") private List scoringParameters; /* * If false, will sort scores by ascending order. By default, set to true. */ @Generated - @JsonProperty(value = "descendingOrder") private Boolean descendingOrder; /** @@ -46,8 +47,7 @@ public ScoringRuleOptions() { } /** - * Get the batchSize property: Set batch size when 'isBatchScoringEnabled' is set to true. Defaults to 20 if not - * configured. + * Get the batchSize property: Set batch size when 'isBatchScoringEnabled' is set to true. Defaults to 20 if not configured. * * @return the batchSize value. */ @@ -57,8 +57,7 @@ public Integer getBatchSize() { } /** - * Set the batchSize property: Set batch size when 'isBatchScoringEnabled' is set to true. Defaults to 20 if not - * configured. + * Set the batchSize property: Set batch size when 'isBatchScoringEnabled' is set to true. Defaults to 20 if not configured. * * @param batchSize the batchSize value to set. * @return the ScoringRuleOptions object itself. @@ -66,14 +65,12 @@ public Integer getBatchSize() { @Generated public ScoringRuleOptions setBatchSize(Integer batchSize) { this.batchSize = batchSize; + this.updatedProperties.add("batchSize"); return this; } /** - * Get the scoringParameters property: List of extra parameters from a job that will be sent as part of the payload - * to scoring rule. If not set, a job's labels (sent in the payload as `job`) and a job's worker selectors (sent in - * the payload as `selectors`) are added to the payload of the scoring rule by default. Note: Worker labels are - * always sent with scoring payload. + * Get the scoringParameters property: List of extra parameters from a job that will be sent as part of the payload to scoring rule. If not set, a job's labels (sent in the payload as `job`) and a job's worker selectors (sent in the payload as `selectors`) are added to the payload of the scoring rule by default. Note: Worker labels are always sent with scoring payload. * * @return the scoringParameters value. */ @@ -83,10 +80,7 @@ public List getScoringParameters() { } /** - * Set the scoringParameters property: List of extra parameters from a job that will be sent as part of the payload - * to scoring rule. If not set, a job's labels (sent in the payload as `job`) and a job's worker selectors (sent in - * the payload as `selectors`) are added to the payload of the scoring rule by default. Note: Worker labels are - * always sent with scoring payload. + * Set the scoringParameters property: List of extra parameters from a job that will be sent as part of the payload to scoring rule. If not set, a job's labels (sent in the payload as `job`) and a job's worker selectors (sent in the payload as `selectors`) are added to the payload of the scoring rule by default. Note: Worker labels are always sent with scoring payload. * * @param scoringParameters the scoringParameters value to set. * @return the ScoringRuleOptions object itself. @@ -94,6 +88,7 @@ public List getScoringParameters() { @Generated public ScoringRuleOptions setScoringParameters(List scoringParameters) { this.scoringParameters = scoringParameters; + this.updatedProperties.add("scoringParameters"); return this; } @@ -116,22 +111,18 @@ public Boolean isDescendingOrder() { @Generated public ScoringRuleOptions setDescendingOrder(Boolean descendingOrder) { this.descendingOrder = descendingOrder; + this.updatedProperties.add("descendingOrder"); return this; } /* - * If set to true, will score workers in batches, and the parameter name of the worker labels will be sent as - * `workers`. By default, set to false and the parameter name for the worker labels will be sent as `worker`. Note: - * If enabled, use 'batchSize' to set batch size. + * If set to true, will score workers in batches, and the parameter name of the worker labels will be sent as `workers`. By default, set to false and the parameter name for the worker labels will be sent as `worker`. Note: If enabled, use 'batchSize' to set batch size. */ @Generated - @JsonProperty(value = "isBatchScoringEnabled") private Boolean isBatchScoringEnabled; /** - * Get the isBatchScoringEnabled property: If set to true, will score workers in batches, and the parameter name of - * the worker labels will be sent as `workers`. By default, set to false and the parameter name for the worker - * labels will be sent as `worker`. Note: If enabled, use 'batchSize' to set batch size. + * Get the isBatchScoringEnabled property: If set to true, will score workers in batches, and the parameter name of the worker labels will be sent as `workers`. By default, set to false and the parameter name for the worker labels will be sent as `worker`. Note: If enabled, use 'batchSize' to set batch size. * * @return the isBatchScoringEnabled value. */ @@ -154,9 +145,7 @@ public ScoringRuleOptions setBatchScoringEnabled(Boolean isBatchScoringEnabled) } /** - * Set the isBatchScoringEnabled property: If set to true, will score workers in batches, and the parameter name of - * the worker labels will be sent as `workers`. By default, set to false and the parameter name for the worker - * labels will be sent as `worker`. Note: If enabled, use 'batchSize' to set batch size. + * Set the isBatchScoringEnabled property: If set to true, will score workers in batches, and the parameter name of the worker labels will be sent as `workers`. By default, set to false and the parameter name for the worker labels will be sent as `worker`. Note: If enabled, use 'batchSize' to set batch size. * * @param isBatchScoringEnabled the isBatchScoringEnabled value to set. * @return the ScoringRuleOptions object itself. @@ -164,6 +153,114 @@ public ScoringRuleOptions setBatchScoringEnabled(Boolean isBatchScoringEnabled) @Generated public ScoringRuleOptions setIsBatchScoringEnabled(Boolean isBatchScoringEnabled) { this.isBatchScoringEnabled = isBatchScoringEnabled; + this.updatedProperties.add("isBatchScoringEnabled"); return this; } + + @Generated + private boolean jsonMergePatch; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper.setScoringRuleOptionsAccessor((model, jsonMergePatchEnabled) -> { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + }); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeNumberField("batchSize", this.batchSize); + jsonWriter.writeArrayField("scoringParameters", this.scoringParameters, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + jsonWriter.writeBooleanField("isBatchScoringEnabled", this.isBatchScoringEnabled); + jsonWriter.writeBooleanField("descendingOrder", this.descendingOrder); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("batchSize")) { + if (this.batchSize == null) { + jsonWriter.writeNullField("batchSize"); + } else { + jsonWriter.writeNumberField("batchSize", this.batchSize); + } + } + if (updatedProperties.contains("scoringParameters")) { + if (this.scoringParameters == null) { + jsonWriter.writeNullField("scoringParameters"); + } else { + jsonWriter.writeArrayField("scoringParameters", this.scoringParameters, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + } + } + if (updatedProperties.contains("isBatchScoringEnabled")) { + if (this.isBatchScoringEnabled == null) { + jsonWriter.writeNullField("isBatchScoringEnabled"); + } else { + jsonWriter.writeBooleanField("isBatchScoringEnabled", this.isBatchScoringEnabled); + } + } + if (updatedProperties.contains("descendingOrder")) { + if (this.descendingOrder == null) { + jsonWriter.writeNullField("descendingOrder"); + } else { + jsonWriter.writeBooleanField("descendingOrder", this.descendingOrder); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ScoringRuleOptions from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ScoringRuleOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ScoringRuleOptions. + */ + @Generated + public static ScoringRuleOptions fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ScoringRuleOptions deserializedScoringRuleOptions = new ScoringRuleOptions(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("batchSize".equals(fieldName)) { + deserializedScoringRuleOptions.batchSize = reader.getNullable(JsonReader::getInt); + } else if ("scoringParameters".equals(fieldName)) { + List scoringParameters + = reader.readArray(reader1 -> ScoringRuleParameterSelector.fromString(reader1.getString())); + deserializedScoringRuleOptions.scoringParameters = scoringParameters; + } else if ("isBatchScoringEnabled".equals(fieldName)) { + deserializedScoringRuleOptions.isBatchScoringEnabled = reader.getNullable(JsonReader::getBoolean); + } else if ("descendingOrder".equals(fieldName)) { + deserializedScoringRuleOptions.descendingOrder = reader.getNullable(JsonReader::getBoolean); + } else { + reader.skipChildren(); + } + } + return deserializedScoringRuleOptions; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/ScoringRuleParameterSelector.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/ScoringRuleParameterSelector.java index d63c907c002b..cb16418955be 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/ScoringRuleParameterSelector.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/ScoringRuleParameterSelector.java @@ -5,7 +5,6 @@ import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; -import com.fasterxml.jackson.annotation.JsonCreator; import java.util.Collection; /** @@ -14,13 +13,13 @@ public final class ScoringRuleParameterSelector extends ExpandableStringEnum { /** - * Parameter to add job labels to scoring payload. Property is sent as `job`. + * Parameter to add job labels to scoring payload. Property is sent as `job`. */ @Generated public static final ScoringRuleParameterSelector JOB_LABELS = fromString("jobLabels"); /** - * Parameter to add worker selectors from a job to scoring payload. Property is sent as `selectors`. + * Parameter to add worker selectors from a job to scoring payload. Property is sent as `selectors`. */ @Generated public static final ScoringRuleParameterSelector WORKER_SELECTORS = fromString("workerSelectors"); @@ -42,7 +41,6 @@ public ScoringRuleParameterSelector() { * @return the corresponding ScoringRuleParameterSelector. */ @Generated - @JsonCreator public static ScoringRuleParameterSelector fromString(String name) { return fromString(name, ScoringRuleParameterSelector.class); } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/UnassignJobOptions.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/UnassignJobOptions.java index 55d9f5e68dd2..320ab8c0064c 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/UnassignJobOptions.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/UnassignJobOptions.java @@ -5,19 +5,22 @@ import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * Request payload for unassigning a job. */ @Fluent -public final class UnassignJobOptions { +public final class UnassignJobOptions implements JsonSerializable { /* * If SuspendMatching is true, then a job is not queued for re-matching with a worker. */ @Generated - @JsonProperty(value = "suspendMatching") private Boolean suspendMatching; /** @@ -28,8 +31,7 @@ public UnassignJobOptions() { } /** - * Get the suspendMatching property: If SuspendMatching is true, then a job is not queued for re-matching with a - * worker. + * Get the suspendMatching property: If SuspendMatching is true, then a job is not queued for re-matching with a worker. * * @return the suspendMatching value. */ @@ -39,8 +41,7 @@ public Boolean isSuspendMatching() { } /** - * Set the suspendMatching property: If SuspendMatching is true, then a job is not queued for re-matching with a - * worker. + * Set the suspendMatching property: If SuspendMatching is true, then a job is not queued for re-matching with a worker. * * @param suspendMatching the suspendMatching value to set. * @return the UnassignJobOptions object itself. @@ -50,4 +51,39 @@ public UnassignJobOptions setSuspendMatching(Boolean suspendMatching) { this.suspendMatching = suspendMatching; return this; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeBooleanField("suspendMatching", this.suspendMatching); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of UnassignJobOptions from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of UnassignJobOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the UnassignJobOptions. + */ + @Generated + public static UnassignJobOptions fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + UnassignJobOptions deserializedUnassignJobOptions = new UnassignJobOptions(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("suspendMatching".equals(fieldName)) { + deserializedUnassignJobOptions.suspendMatching = reader.getNullable(JsonReader::getBoolean); + } else { + reader.skipChildren(); + } + } + return deserializedUnassignJobOptions; + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/UnassignJobResult.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/UnassignJobResult.java index 861b5d548267..a210d7bc53de 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/UnassignJobResult.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/UnassignJobResult.java @@ -5,28 +5,29 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * Response payload after a job has been successfully unassigned. */ @Immutable -public final class UnassignJobResult { +public final class UnassignJobResult implements JsonSerializable { /* * Id of an unassigned job. */ @Generated - @JsonProperty(value = "jobId") - private String jobId; + private final String jobId; /* * The number of times a job is unassigned. At a maximum 3. */ @Generated - @JsonProperty(value = "unassignmentCount") - private int unassignmentCount; + private final int unassignmentCount; /** * Creates an instance of UnassignJobResult class. @@ -35,9 +36,7 @@ public final class UnassignJobResult { * @param unassignmentCount the unassignmentCount value to set. */ @Generated - @JsonCreator - private UnassignJobResult(@JsonProperty(value = "jobId") String jobId, - @JsonProperty(value = "unassignmentCount") int unassignmentCount) { + private UnassignJobResult(String jobId, int unassignmentCount) { this.jobId = jobId; this.unassignmentCount = unassignmentCount; } @@ -61,4 +60,44 @@ public String getJobId() { public int getUnassignmentCount() { return this.unassignmentCount; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("jobId", this.jobId); + jsonWriter.writeIntField("unassignmentCount", this.unassignmentCount); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of UnassignJobResult from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of UnassignJobResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the UnassignJobResult. + */ + @Generated + public static UnassignJobResult fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String jobId = null; + int unassignmentCount = 0; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("jobId".equals(fieldName)) { + jobId = reader.getString(); + } else if ("unassignmentCount".equals(fieldName)) { + unassignmentCount = reader.getInt(); + } else { + reader.skipChildren(); + } + } + return new UnassignJobResult(jobId, unassignmentCount); + }); + } } diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/WorkerSelectorAttachmentKind.java b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/WorkerSelectorAttachmentKind.java new file mode 100644 index 000000000000..a292032fdeda --- /dev/null +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/models/WorkerSelectorAttachmentKind.java @@ -0,0 +1,75 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.communication.jobrouter.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Discriminators for supported worker selector attachment types. + */ +public final class WorkerSelectorAttachmentKind extends ExpandableStringEnum { + + /** + * Discriminator value for ConditionalWorkerSelectorAttachment. + */ + @Generated + public static final WorkerSelectorAttachmentKind CONDITIONAL = fromString("conditional"); + + /** + * Discriminator value for PassThroughWorkerSelectorAttachment. + */ + @Generated + public static final WorkerSelectorAttachmentKind PASS_THROUGH = fromString("passThrough"); + + /** + * Discriminator value for RuleEngineWorkerSelectorAttachment. + */ + @Generated + public static final WorkerSelectorAttachmentKind RULE_ENGINE = fromString("ruleEngine"); + + /** + * Discriminator value for StaticWorkerSelectorAttachment. + */ + @Generated + public static final WorkerSelectorAttachmentKind STATIC = fromString("static"); + + /** + * Discriminator value for WeightedAllocationWorkerSelectorAttachment. + */ + @Generated + public static final WorkerSelectorAttachmentKind WEIGHTED_ALLOCATION = fromString("weightedAllocation"); + + /** + * Creates a new instance of WorkerSelectorAttachmentKind value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public WorkerSelectorAttachmentKind() { + } + + /** + * Creates or finds a WorkerSelectorAttachmentKind from its string representation. + * + * @param name a name to look for. + * @return the corresponding WorkerSelectorAttachmentKind. + */ + @Generated + public static WorkerSelectorAttachmentKind fromString(String name) { + return fromString(name, WorkerSelectorAttachmentKind.class); + } + + /** + * Gets known WorkerSelectorAttachmentKind values. + * + * @return known WorkerSelectorAttachmentKind values. + */ + @Generated + public static Collection values() { + return values(WorkerSelectorAttachmentKind.class); + } +} diff --git a/sdk/communication/azure-communication-jobrouter/src/main/java/module-info.java b/sdk/communication/azure-communication-jobrouter/src/main/java/module-info.java index e7db7328f707..8d173dd23790 100644 --- a/sdk/communication/azure-communication-jobrouter/src/main/java/module-info.java +++ b/sdk/communication/azure-communication-jobrouter/src/main/java/module-info.java @@ -4,9 +4,10 @@ module com.azure.communication.jobrouter { requires transitive com.azure.core; + requires transitive com.azure.json; requires com.azure.communication.common; exports com.azure.communication.jobrouter; exports com.azure.communication.jobrouter.models; - opens com.azure.communication.jobrouter.implementation.models to com.azure.core, com.fasterxml.jackson.databind; - opens com.azure.communication.jobrouter.models to com.azure.core, com.fasterxml.jackson.databind; + opens com.azure.communication.jobrouter.implementation.models to com.azure.core; + opens com.azure.communication.jobrouter.models to com.azure.core; } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/MessageTemplateAsyncClient.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/MessageTemplateAsyncClient.java index 20ca21711ac0..d19ca383e39c 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/MessageTemplateAsyncClient.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/MessageTemplateAsyncClient.java @@ -42,30 +42,17 @@ public final class MessageTemplateAsyncClient { /** * List all templates for given Azure Communication Services channel. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(whatsApp) (Optional)
      *     name: String (Required)
      *     language: String (Required)
      *     status: String(approved/rejected/pending/paused) (Required)
@@ -105,12 +92,14 @@ public PagedFlux listTemplates(String channelId) {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listTemplates(channelId, requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux
                 .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                     pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                    pagedResponse.getValue().stream()
+                    pagedResponse.getValue()
+                        .stream()
                         .map(protocolMethodData -> protocolMethodData.toObject(MessageTemplateItem.class))
                         .collect(Collectors.toList()),
                     pagedResponse.getContinuationToken(), null));
diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/MessageTemplateClient.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/MessageTemplateClient.java
index ca58289a9b1c..d36f269eb450 100644
--- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/MessageTemplateClient.java
+++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/MessageTemplateClient.java
@@ -38,30 +38,17 @@ public final class MessageTemplateClient {
 
     /**
      * List all templates for given Azure Communication Services channel.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(whatsApp) (Optional)
      *     name: String (Required)
      *     language: String (Required)
      *     status: String(approved/rejected/pending/paused) (Required)
diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/MessageTemplateClientBuilder.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/MessageTemplateClientBuilder.java
index b8b3adf04743..af07131c5b68 100644
--- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/MessageTemplateClientBuilder.java
+++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/MessageTemplateClientBuilder.java
@@ -3,18 +3,18 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.communication.messages;
 
-import com.azure.communication.common.implementation.CommunicationConnectionString;
 import com.azure.communication.common.implementation.HmacAuthenticationPolicy;
+import com.azure.core.credential.AzureKeyCredential;
+import com.azure.communication.common.implementation.CommunicationConnectionString;
+import com.azure.core.client.traits.ConnectionStringTrait;
+import com.azure.core.client.traits.KeyCredentialTrait;
+import com.azure.core.client.traits.TokenCredentialTrait;
 import com.azure.communication.messages.implementation.MessageTemplateClientImpl;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.ServiceClientBuilder;
 import com.azure.core.client.traits.ConfigurationTrait;
-import com.azure.core.client.traits.ConnectionStringTrait;
 import com.azure.core.client.traits.EndpointTrait;
 import com.azure.core.client.traits.HttpTrait;
-import com.azure.core.client.traits.KeyCredentialTrait;
-import com.azure.core.client.traits.TokenCredentialTrait;
-import com.azure.core.credential.AzureKeyCredential;
 import com.azure.core.credential.KeyCredential;
 import com.azure.core.credential.TokenCredential;
 import com.azure.core.http.HttpClient;
@@ -27,8 +27,8 @@
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
 import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.RequestIdPolicy;
@@ -307,18 +307,22 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
         policies.add(new AddDatePolicy());
         policies.add(createHttpPipelineAuthPolicy());
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/NotificationMessagesAsyncClient.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/NotificationMessagesAsyncClient.java
index 305e3f701042..99b171a1d72e 100644
--- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/NotificationMessagesAsyncClient.java
+++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/NotificationMessagesAsyncClient.java
@@ -41,45 +41,25 @@ public final class NotificationMessagesAsyncClient {
 
     /**
      * Sends a notification message from Business to User.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
+     *     kind: String(text/image/template) (Optional)
      *     channelRegistrationId: String (Required)
      *     to (Required): [
      *         String (Required)
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     receipts (Required): [
@@ -97,8 +77,7 @@ public final class NotificationMessagesAsyncClient {
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return result of the send message operation along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return result of the send message operation along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -108,9 +87,7 @@ public Mono> sendWithResponse(BinaryData notificationConten
 
     /**
      * Download the Media payload from a User to Business message.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * BinaryData
      * }
diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/NotificationMessagesClient.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/NotificationMessagesClient.java index b4e49073108a..0b4f8db30116 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/NotificationMessagesClient.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/NotificationMessagesClient.java @@ -39,45 +39,25 @@ public final class NotificationMessagesClient { /** * Sends a notification message from Business to User. - *

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
+     *     kind: String(text/image/template) (Optional)
      *     channelRegistrationId: String (Required)
      *     to (Required): [
      *         String (Required)
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     receipts (Required): [
@@ -105,9 +85,7 @@ public Response sendWithResponse(BinaryData notificationContent, Req
 
     /**
      * Download the Media payload from a User to Business message.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * BinaryData
      * }
diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/NotificationMessagesClientBuilder.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/NotificationMessagesClientBuilder.java index cd8cb8776fa5..77ab7f6f8fe0 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/NotificationMessagesClientBuilder.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/NotificationMessagesClientBuilder.java @@ -3,18 +3,18 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.messages; -import com.azure.communication.common.implementation.CommunicationConnectionString; import com.azure.communication.common.implementation.HmacAuthenticationPolicy; +import com.azure.core.credential.AzureKeyCredential; +import com.azure.communication.common.implementation.CommunicationConnectionString; +import com.azure.core.client.traits.ConnectionStringTrait; +import com.azure.core.client.traits.KeyCredentialTrait; +import com.azure.core.client.traits.TokenCredentialTrait; import com.azure.communication.messages.implementation.NotificationMessagesClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; -import com.azure.core.client.traits.ConnectionStringTrait; import com.azure.core.client.traits.EndpointTrait; import com.azure.core.client.traits.HttpTrait; -import com.azure.core.client.traits.KeyCredentialTrait; -import com.azure.core.client.traits.TokenCredentialTrait; -import com.azure.core.credential.AzureKeyCredential; import com.azure.core.credential.KeyCredential; import com.azure.core.credential.TokenCredential; import com.azure.core.http.HttpClient; @@ -27,8 +27,8 @@ import com.azure.core.http.policy.AddHeadersFromContextPolicy; import com.azure.core.http.policy.AddHeadersPolicy; import com.azure.core.http.policy.BearerTokenAuthenticationPolicy; -import com.azure.core.http.policy.HttpLogOptions; import com.azure.core.http.policy.HttpLoggingPolicy; +import com.azure.core.http.policy.HttpLogOptions; import com.azure.core.http.policy.HttpPipelinePolicy; import com.azure.core.http.policy.HttpPolicyProviders; import com.azure.core.http.policy.RequestIdPolicy; @@ -307,18 +307,22 @@ private HttpPipeline createHttpPipeline() { if (headers.getSize() > 0) { policies.add(new AddHeadersPolicy(headers)); } - this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL) + this.pipelinePolicies.stream() + .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL) .forEach(p -> policies.add(p)); HttpPolicyProviders.addBeforeRetryPolicies(policies); policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy())); policies.add(new AddDatePolicy()); policies.add(createHttpPipelineAuthPolicy()); - this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY) + this.pipelinePolicies.stream() + .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY) .forEach(p -> policies.add(p)); HttpPolicyProviders.addAfterRetryPolicies(policies); policies.add(new HttpLoggingPolicy(localHttpLogOptions)); HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0])) - .httpClient(httpClient).clientOptions(localClientOptions).build(); + .httpClient(httpClient) + .clientOptions(localClientOptions) + .build(); return httpPipeline; } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/implementation/MessageTemplateClientImpl.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/implementation/MessageTemplateClientImpl.java index 65c262030300..83cf48fff93b 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/implementation/MessageTemplateClientImpl.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/implementation/MessageTemplateClientImpl.java @@ -149,8 +149,7 @@ public MessageTemplateClientImpl(HttpPipeline httpPipeline, SerializerAdapter se } /** - * The interface defining all the services for MessageTemplateClient to be used by the proxy service to perform - * REST calls. + * The interface defining all the services for MessageTemplateClient to be used by the proxy service to perform REST calls. */ @Host("{endpoint}") @ServiceInterface(name = "MessageTemplateClien") @@ -198,30 +197,17 @@ Response listTemplatesNextSync(@PathParam(value = "nextLink", encode /** * List all templates for given Azure Communication Services channel. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(whatsApp) (Optional)
      *     name: String (Required)
      *     language: String (Required)
      *     status: String(approved/rejected/pending/paused) (Required)
@@ -234,8 +220,7 @@ Response listTemplatesNextSync(@PathParam(value = "nextLink", encode
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of MessageTemplateItem items along with {@link PagedResponse} on successful completion
-     * of {@link Mono}.
+     * @return paged collection of MessageTemplateItem items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listTemplatesSinglePageAsync(String channelId,
@@ -250,30 +235,17 @@ private Mono> listTemplatesSinglePageAsync(String chan
 
     /**
      * List all templates for given Azure Communication Services channel.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(whatsApp) (Optional)
      *     name: String (Required)
      *     language: String (Required)
      *     status: String(approved/rejected/pending/paused) (Required)
@@ -319,30 +291,17 @@ public PagedFlux listTemplatesAsync(String channelId, RequestOptions
 
     /**
      * List all templates for given Azure Communication Services channel.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(whatsApp) (Optional)
      *     name: String (Required)
      *     language: String (Required)
      *     status: String(approved/rejected/pending/paused) (Required)
@@ -368,30 +327,17 @@ private PagedResponse listTemplatesSinglePage(String channelId, Requ
 
     /**
      * List all templates for given Azure Communication Services channel.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
Query Parameters
NameTypeRequiredDescription
maxpagesizeIntegerNoNumber of objects to return per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(whatsApp) (Optional)
      *     name: String (Required)
      *     language: String (Required)
      *     status: String(approved/rejected/pending/paused) (Required)
@@ -437,11 +383,10 @@ public PagedIterable listTemplates(String channelId, RequestOptions
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(whatsApp) (Optional)
      *     name: String (Required)
      *     language: String (Required)
      *     status: String(approved/rejected/pending/paused) (Required)
@@ -456,8 +401,7 @@ public PagedIterable listTemplates(String channelId, RequestOptions
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of MessageTemplateItem items along with {@link PagedResponse} on successful completion
-     * of {@link Mono}.
+     * @return paged collection of MessageTemplateItem items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listTemplatesNextSinglePageAsync(String nextLink,
@@ -472,11 +416,10 @@ private Mono> listTemplatesNextSinglePageAsync(String
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(whatsApp) (Optional)
      *     name: String (Required)
      *     language: String (Required)
      *     status: String(approved/rejected/pending/paused) (Required)
diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/implementation/NotificationMessagesClientImpl.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/implementation/NotificationMessagesClientImpl.java
index a7d5ad3ec367..0f6f1c81024a 100644
--- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/implementation/NotificationMessagesClientImpl.java
+++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/implementation/NotificationMessagesClientImpl.java
@@ -147,8 +147,7 @@ public NotificationMessagesClientImpl(HttpPipeline httpPipeline, SerializerAdapt
     }
 
     /**
-     * The interface defining all the services for NotificationMessagesClient to be used by the proxy service to
-     * perform REST calls.
+     * The interface defining all the services for NotificationMessagesClient to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}")
     @ServiceInterface(name = "NotificationMessages")
@@ -198,45 +197,25 @@ Response downloadMediaSync(@HostParam("endpoint") String endpoint,
 
     /**
      * Sends a notification message from Business to User.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
+     *     kind: String(text/image/template) (Optional)
      *     channelRegistrationId: String (Required)
      *     to (Required): [
      *         String (Required)
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     receipts (Required): [
@@ -254,8 +233,7 @@ Response downloadMediaSync(@HostParam("endpoint") String endpoint,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return result of the send message operation along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return result of the send message operation along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> sendWithResponseAsync(BinaryData notificationContent,
@@ -266,14 +244,14 @@ public Mono> sendWithResponseAsync(BinaryData notificationC
         String repeatabilityFirstSent = DateTimeRfc1123.toRfc1123String(OffsetDateTime.now());
         requestOptionsLocal.addRequestCallback(requestLocal -> {
             if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-request-id")) == null) {
-                requestLocal.getHeaders().set(HttpHeaderName.fromString("repeatability-request-id"),
-                    repeatabilityRequestId);
+                requestLocal.getHeaders()
+                    .set(HttpHeaderName.fromString("repeatability-request-id"), repeatabilityRequestId);
             }
         });
         requestOptionsLocal.addRequestCallback(requestLocal -> {
             if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-first-sent")) == null) {
-                requestLocal.getHeaders().set(HttpHeaderName.fromString("repeatability-first-sent"),
-                    repeatabilityFirstSent);
+                requestLocal.getHeaders()
+                    .set(HttpHeaderName.fromString("repeatability-first-sent"), repeatabilityFirstSent);
             }
         });
         return FluxUtil.withContext(context -> service.send(this.getEndpoint(), this.getServiceVersion().getVersion(),
@@ -282,45 +260,25 @@ public Mono> sendWithResponseAsync(BinaryData notificationC
 
     /**
      * Sends a notification message from Business to User.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
+     *     kind: String(text/image/template) (Optional)
      *     channelRegistrationId: String (Required)
      *     to (Required): [
      *         String (Required)
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     receipts (Required): [
@@ -348,14 +306,14 @@ public Response sendWithResponse(BinaryData notificationContent, Req
         String repeatabilityFirstSent = DateTimeRfc1123.toRfc1123String(OffsetDateTime.now());
         requestOptionsLocal.addRequestCallback(requestLocal -> {
             if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-request-id")) == null) {
-                requestLocal.getHeaders().set(HttpHeaderName.fromString("repeatability-request-id"),
-                    repeatabilityRequestId);
+                requestLocal.getHeaders()
+                    .set(HttpHeaderName.fromString("repeatability-request-id"), repeatabilityRequestId);
             }
         });
         requestOptionsLocal.addRequestCallback(requestLocal -> {
             if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-first-sent")) == null) {
-                requestLocal.getHeaders().set(HttpHeaderName.fromString("repeatability-first-sent"),
-                    repeatabilityFirstSent);
+                requestLocal.getHeaders()
+                    .set(HttpHeaderName.fromString("repeatability-first-sent"), repeatabilityFirstSent);
             }
         });
         return service.sendSync(this.getEndpoint(), this.getServiceVersion().getVersion(), accept, notificationContent,
@@ -364,9 +322,7 @@ public Response sendWithResponse(BinaryData notificationContent, Req
 
     /**
      * Download the Media payload from a User to Business message.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * BinaryData
      * }
@@ -388,9 +344,7 @@ public Mono> downloadMediaWithResponseAsync(String mediaId, /** * Download the Media payload from a User to Business message. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * BinaryData
      * }
diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/implementation/models/MessageDataStream.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/implementation/models/MessageDataStream.java index c13663bee822..5d439c4978ba 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/implementation/models/MessageDataStream.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/implementation/models/MessageDataStream.java @@ -6,28 +6,29 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; import com.azure.core.util.CoreUtils; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * A data stream. */ @Immutable -public final class MessageDataStream { +public final class MessageDataStream implements JsonSerializable { /* * The stream ID. */ @Generated - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) private String mediaId; /* * The stream body. */ @Generated - @JsonProperty(value = "body") - private byte[] body; + private final byte[] body; /** * Creates an instance of MessageDataStream class. @@ -35,8 +36,7 @@ public final class MessageDataStream { * @param body the body value to set. */ @Generated - @JsonCreator - private MessageDataStream(@JsonProperty(value = "body") byte[] body) { + private MessageDataStream(byte[] body) { this.body = body; } @@ -59,4 +59,45 @@ public String getMediaId() { public byte[] getBody() { return CoreUtils.clone(this.body); } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeBinaryField("body", this.body); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MessageDataStream from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MessageDataStream if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the MessageDataStream. + */ + @Generated + public static MessageDataStream fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String mediaId = null; + byte[] body = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + mediaId = reader.getString(); + } else if ("body".equals(fieldName)) { + body = reader.getBinary(); + } else { + reader.skipChildren(); + } + } + MessageDataStream deserializedMessageDataStream = new MessageDataStream(body); + deserializedMessageDataStream.mediaId = mediaId; + return deserializedMessageDataStream; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/CommunicationMessageKind.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/CommunicationMessageKind.java new file mode 100644 index 000000000000..8aedde4b16f3 --- /dev/null +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/CommunicationMessageKind.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.communication.messages.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The type of message. Supports text, image, template. + */ +public final class CommunicationMessageKind extends ExpandableStringEnum { + + /** + * Text message type. + */ + @Generated + public static final CommunicationMessageKind TEXT = fromString("text"); + + /** + * Image message type. + */ + @Generated + public static final CommunicationMessageKind IMAGE = fromString("image"); + + /** + * Template message type. + */ + @Generated + public static final CommunicationMessageKind TEMPLATE = fromString("template"); + + /** + * Creates a new instance of CommunicationMessageKind value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public CommunicationMessageKind() { + } + + /** + * Creates or finds a CommunicationMessageKind from its string representation. + * + * @param name a name to look for. + * @return the corresponding CommunicationMessageKind. + */ + @Generated + public static CommunicationMessageKind fromString(String name) { + return fromString(name, CommunicationMessageKind.class); + } + + /** + * Gets known CommunicationMessageKind values. + * + * @return known CommunicationMessageKind values. + */ + @Generated + public static Collection values() { + return values(CommunicationMessageKind.class); + } +} diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/CommunicationMessagesChannel.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/CommunicationMessagesChannel.java new file mode 100644 index 000000000000..c5d78025027a --- /dev/null +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/CommunicationMessagesChannel.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.communication.messages.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The type of the communication messages channel. + */ +public final class CommunicationMessagesChannel extends ExpandableStringEnum { + + /** + * The WhatsApp communication messages channel type. + */ + @Generated + public static final CommunicationMessagesChannel WHATS_APP = fromString("whatsApp"); + + /** + * Creates a new instance of CommunicationMessagesChannel value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public CommunicationMessagesChannel() { + } + + /** + * Creates or finds a CommunicationMessagesChannel from its string representation. + * + * @param name a name to look for. + * @return the corresponding CommunicationMessagesChannel. + */ + @Generated + public static CommunicationMessagesChannel fromString(String name) { + return fromString(name, CommunicationMessagesChannel.class); + } + + /** + * Gets known CommunicationMessagesChannel values. + * + * @return known CommunicationMessagesChannel values. + */ + @Generated + public static Collection values() { + return values(CommunicationMessagesChannel.class); + } +} diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MediaNotificationContent.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MediaNotificationContent.java index 9e9b6d55910a..afd025805de5 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MediaNotificationContent.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MediaNotificationContent.java @@ -5,17 +5,15 @@ import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.util.List; /** * A request to send a media notification. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("image") @Fluent public final class MediaNotificationContent extends NotificationContent { @@ -23,15 +21,13 @@ public final class MediaNotificationContent extends NotificationContent { * Optional text content. */ @Generated - @JsonProperty(value = "content") private String content; /* * A media url for the file. Required if the type is one of the supported media types, e.g. image */ @Generated - @JsonProperty(value = "mediaUri") - private String mediaUrl; + private final String mediaUrl; /** * Creates an instance of MediaNotificationContent class. @@ -41,10 +37,9 @@ public final class MediaNotificationContent extends NotificationContent { * @param mediaUrl the mediaUrl value to set. */ @Generated - @JsonCreator - public MediaNotificationContent(@JsonProperty(value = "channelRegistrationId") String channelRegistrationId, - @JsonProperty(value = "to") List to, @JsonProperty(value = "mediaUri") String mediaUrl) { + public MediaNotificationContent(String channelRegistrationId, List to, String mediaUrl) { super(channelRegistrationId, to); + setKind(CommunicationMessageKind.IMAGE); this.mediaUrl = mediaUrl; } @@ -71,8 +66,7 @@ public MediaNotificationContent setContent(String content) { } /** - * Get the mediaUrl property: A media url for the file. Required if the type is one of the supported media types, - * e.g. image. + * Get the mediaUrl property: A media url for the file. Required if the type is one of the supported media types, e.g. image. * * @return the mediaUrl value. */ @@ -80,4 +74,60 @@ public MediaNotificationContent setContent(String content) { public String getMediaUrl() { return this.mediaUrl; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("channelRegistrationId", getChannelRegistrationId()); + jsonWriter.writeArrayField("to", getTo(), (writer, element) -> writer.writeString(element)); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("mediaUri", this.mediaUrl); + jsonWriter.writeStringField("content", this.content); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MediaNotificationContent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MediaNotificationContent if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the MediaNotificationContent. + */ + @Generated + public static MediaNotificationContent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String channelRegistrationId = null; + List to = null; + CommunicationMessageKind kind = CommunicationMessageKind.IMAGE; + String mediaUrl = null; + String content = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("channelRegistrationId".equals(fieldName)) { + channelRegistrationId = reader.getString(); + } else if ("to".equals(fieldName)) { + to = reader.readArray(reader1 -> reader1.getString()); + } else if ("kind".equals(fieldName)) { + kind = CommunicationMessageKind.fromString(reader.getString()); + } else if ("mediaUri".equals(fieldName)) { + mediaUrl = reader.getString(); + } else if ("content".equals(fieldName)) { + content = reader.getString(); + } else { + reader.skipChildren(); + } + } + MediaNotificationContent deserializedMediaNotificationContent + = new MediaNotificationContent(channelRegistrationId, to, mediaUrl); + deserializedMediaNotificationContent.setKind(kind); + deserializedMediaNotificationContent.content = content; + return deserializedMediaNotificationContent; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageReceipt.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageReceipt.java index eb8b3314bf78..6c547290037e 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageReceipt.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageReceipt.java @@ -5,28 +5,29 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * Receipt of the sending one message. */ @Immutable -public final class MessageReceipt { +public final class MessageReceipt implements JsonSerializable { /* * The message id. */ @Generated - @JsonProperty(value = "messageId") - private String messageId; + private final String messageId; /* * The native external platform user identifier of the recipient. */ @Generated - @JsonProperty(value = "to") - private String to; + private final String to; /** * Creates an instance of MessageReceipt class. @@ -35,8 +36,7 @@ public final class MessageReceipt { * @param to the to value to set. */ @Generated - @JsonCreator - private MessageReceipt(@JsonProperty(value = "messageId") String messageId, @JsonProperty(value = "to") String to) { + private MessageReceipt(String messageId, String to) { this.messageId = messageId; this.to = to; } @@ -60,4 +60,44 @@ public String getMessageId() { public String getTo() { return this.to; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("messageId", this.messageId); + jsonWriter.writeStringField("to", this.to); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MessageReceipt from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MessageReceipt if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the MessageReceipt. + */ + @Generated + public static MessageReceipt fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String messageId = null; + String to = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("messageId".equals(fieldName)) { + messageId = reader.getString(); + } else if ("to".equals(fieldName)) { + to = reader.getString(); + } else { + reader.skipChildren(); + } + } + return new MessageReceipt(messageId, to); + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplate.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplate.java index f9b8f1d92a2a..af8e7692bc87 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplate.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplate.java @@ -5,43 +5,41 @@ import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.util.List; /** * The template object used to create templates. */ @Fluent -public final class MessageTemplate { +public final class MessageTemplate implements JsonSerializable { /* * Name of the template. */ @Generated - @JsonProperty(value = "name") - private String name; + private final String name; /* - * The template's language, in the ISO 639 format, consist of a two-letter language code followed by an optional - * two-letter country code, e.g., 'en' or 'en_US'. + * The template's language, in the ISO 639 format, consist of a two-letter language code followed by an optional two-letter country code, e.g., 'en' or 'en_US'. */ @Generated - @JsonProperty(value = "language") - private String language; + private final String language; /* * The template values. */ @Generated - @JsonProperty(value = "values") private List values; /* * The binding object to link values to the template specific locations */ @Generated - @JsonProperty(value = "bindings") private MessageTemplateBindings bindings; /** @@ -51,9 +49,7 @@ public final class MessageTemplate { * @param language the language value to set. */ @Generated - @JsonCreator - public MessageTemplate(@JsonProperty(value = "name") String name, - @JsonProperty(value = "language") String language) { + public MessageTemplate(String name, String language) { this.name = name; this.language = language; } @@ -69,8 +65,7 @@ public String getName() { } /** - * Get the language property: The template's language, in the ISO 639 format, consist of a two-letter language code - * followed by an optional two-letter country code, e.g., 'en' or 'en_US'. + * Get the language property: The template's language, in the ISO 639 format, consist of a two-letter language code followed by an optional two-letter country code, e.g., 'en' or 'en_US'. * * @return the language value. */ @@ -122,4 +117,55 @@ public MessageTemplate setBindings(MessageTemplateBindings bindings) { this.bindings = bindings; return this; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("language", this.language); + jsonWriter.writeArrayField("values", this.values, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeJsonField("bindings", this.bindings); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MessageTemplate from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MessageTemplate if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the MessageTemplate. + */ + @Generated + public static MessageTemplate fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + String language = null; + List values = null; + MessageTemplateBindings bindings = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("language".equals(fieldName)) { + language = reader.getString(); + } else if ("values".equals(fieldName)) { + values = reader.readArray(reader1 -> MessageTemplateValue.fromJson(reader1)); + } else if ("bindings".equals(fieldName)) { + bindings = MessageTemplateBindings.fromJson(reader); + } else { + reader.skipChildren(); + } + } + MessageTemplate deserializedMessageTemplate = new MessageTemplate(name, language); + deserializedMessageTemplate.values = values; + deserializedMessageTemplate.bindings = bindings; + return deserializedMessageTemplate; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateBindings.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateBindings.java index 8e75dc6d7cfa..418754677a1c 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateBindings.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateBindings.java @@ -6,27 +6,114 @@ import com.azure.communication.messages.models.channels.WhatsAppMessageTemplateBindings; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * The binding object to link values to the template specific locations. */ -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - include = JsonTypeInfo.As.PROPERTY, - property = "kind", - defaultImpl = MessageTemplateBindings.class) -@JsonTypeName("MessageTemplateBindings") -@JsonSubTypes({ @JsonSubTypes.Type(name = "whatsApp", value = WhatsAppMessageTemplateBindings.class) }) @Immutable -public class MessageTemplateBindings { +public class MessageTemplateBindings implements JsonSerializable { /** * Creates an instance of MessageTemplateBindings class. */ @Generated public MessageTemplateBindings() { + this.kind = MessageTemplateBindingsKind.fromString("MessageTemplateBindings"); + } + + /* + * The type discriminator describing a template bindings type. + */ + @Generated + private MessageTemplateBindingsKind kind; + + /** + * Get the kind property: The type discriminator describing a template bindings type. + * + * @return the kind value. + */ + @Generated + public MessageTemplateBindingsKind getKind() { + return this.kind; + } + + /** + * Set the kind property: The type discriminator describing a template bindings type. + * + * @param kind the kind value to set. + * @return the MessageTemplateBindings object itself. + */ + @Generated + MessageTemplateBindings setKind(MessageTemplateBindingsKind kind) { + this.kind = kind; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MessageTemplateBindings from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MessageTemplateBindings if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the MessageTemplateBindings. + */ + @Generated + public static MessageTemplateBindings fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("whatsApp".equals(discriminatorValue)) { + return WhatsAppMessageTemplateBindings.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static MessageTemplateBindings fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + MessageTemplateBindings deserializedMessageTemplateBindings = new MessageTemplateBindings(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedMessageTemplateBindings.kind + = MessageTemplateBindingsKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedMessageTemplateBindings; + }); } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateBindingsKind.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateBindingsKind.java new file mode 100644 index 000000000000..da03745f1e07 --- /dev/null +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateBindingsKind.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.communication.messages.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The type of the message template. + */ +public final class MessageTemplateBindingsKind extends ExpandableStringEnum { + + /** + * The WhatsApp template type. + */ + @Generated + public static final MessageTemplateBindingsKind WHATS_APP = fromString("whatsApp"); + + /** + * Creates a new instance of MessageTemplateBindingsKind value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public MessageTemplateBindingsKind() { + } + + /** + * Creates or finds a MessageTemplateBindingsKind from its string representation. + * + * @param name a name to look for. + * @return the corresponding MessageTemplateBindingsKind. + */ + @Generated + public static MessageTemplateBindingsKind fromString(String name) { + return fromString(name, MessageTemplateBindingsKind.class); + } + + /** + * Gets known MessageTemplateBindingsKind values. + * + * @return known MessageTemplateBindingsKind values. + */ + @Generated + public static Collection values() { + return values(MessageTemplateBindingsKind.class); + } +} diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateDocument.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateDocument.java index 8dd369aa9833..cff98ed8d31d 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateDocument.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateDocument.java @@ -5,16 +5,14 @@ import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * The message template's document value information. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("document") @Fluent public final class MessageTemplateDocument extends MessageTemplateValue { @@ -22,21 +20,18 @@ public final class MessageTemplateDocument extends MessageTemplateValue { * The (public) URL of the media. */ @Generated - @JsonProperty(value = "url") - private String url; + private final String url; /* * The [optional] caption of the media object. */ @Generated - @JsonProperty(value = "caption") private String caption; /* * The [optional] filename of the media file. */ @Generated - @JsonProperty(value = "fileName") private String fileName; /** @@ -46,10 +41,9 @@ public final class MessageTemplateDocument extends MessageTemplateValue { * @param url the url value to set. */ @Generated - @JsonCreator - public MessageTemplateDocument(@JsonProperty(value = "name") String refValue, - @JsonProperty(value = "url") String url) { + public MessageTemplateDocument(String refValue, String url) { super(refValue); + setKind(MessageTemplateValueKind.DOCUMENT); this.url = url; } @@ -106,4 +100,60 @@ public MessageTemplateDocument setFileName(String fileName) { this.fileName = fileName; return this; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", getRefValue()); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("url", this.url); + jsonWriter.writeStringField("caption", this.caption); + jsonWriter.writeStringField("fileName", this.fileName); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MessageTemplateDocument from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MessageTemplateDocument if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the MessageTemplateDocument. + */ + @Generated + public static MessageTemplateDocument fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String refValue = null; + MessageTemplateValueKind kind = MessageTemplateValueKind.DOCUMENT; + String url = null; + String caption = null; + String fileName = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + refValue = reader.getString(); + } else if ("kind".equals(fieldName)) { + kind = MessageTemplateValueKind.fromString(reader.getString()); + } else if ("url".equals(fieldName)) { + url = reader.getString(); + } else if ("caption".equals(fieldName)) { + caption = reader.getString(); + } else if ("fileName".equals(fieldName)) { + fileName = reader.getString(); + } else { + reader.skipChildren(); + } + } + MessageTemplateDocument deserializedMessageTemplateDocument = new MessageTemplateDocument(refValue, url); + deserializedMessageTemplateDocument.setKind(kind); + deserializedMessageTemplateDocument.caption = caption; + deserializedMessageTemplateDocument.fileName = fileName; + return deserializedMessageTemplateDocument; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateImage.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateImage.java index 86bcfc40e0eb..f8a99129334c 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateImage.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateImage.java @@ -5,16 +5,14 @@ import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * The message template's image value information. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("image") @Fluent public final class MessageTemplateImage extends MessageTemplateValue { @@ -22,21 +20,18 @@ public final class MessageTemplateImage extends MessageTemplateValue { * The (public) URL of the media. */ @Generated - @JsonProperty(value = "url") - private String url; + private final String url; /* * The [optional] caption of the media object. */ @Generated - @JsonProperty(value = "caption") private String caption; /* * The [optional] filename of the media file. */ @Generated - @JsonProperty(value = "fileName") private String fileName; /** @@ -46,10 +41,9 @@ public final class MessageTemplateImage extends MessageTemplateValue { * @param url the url value to set. */ @Generated - @JsonCreator - public MessageTemplateImage(@JsonProperty(value = "name") String refValue, - @JsonProperty(value = "url") String url) { + public MessageTemplateImage(String refValue, String url) { super(refValue); + setKind(MessageTemplateValueKind.IMAGE); this.url = url; } @@ -106,4 +100,60 @@ public MessageTemplateImage setFileName(String fileName) { this.fileName = fileName; return this; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", getRefValue()); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("url", this.url); + jsonWriter.writeStringField("caption", this.caption); + jsonWriter.writeStringField("fileName", this.fileName); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MessageTemplateImage from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MessageTemplateImage if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the MessageTemplateImage. + */ + @Generated + public static MessageTemplateImage fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String refValue = null; + MessageTemplateValueKind kind = MessageTemplateValueKind.IMAGE; + String url = null; + String caption = null; + String fileName = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + refValue = reader.getString(); + } else if ("kind".equals(fieldName)) { + kind = MessageTemplateValueKind.fromString(reader.getString()); + } else if ("url".equals(fieldName)) { + url = reader.getString(); + } else if ("caption".equals(fieldName)) { + caption = reader.getString(); + } else if ("fileName".equals(fieldName)) { + fileName = reader.getString(); + } else { + reader.skipChildren(); + } + } + MessageTemplateImage deserializedMessageTemplateImage = new MessageTemplateImage(refValue, url); + deserializedMessageTemplateImage.setKind(kind); + deserializedMessageTemplateImage.caption = caption; + deserializedMessageTemplateImage.fileName = fileName; + return deserializedMessageTemplateImage; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateItem.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateItem.java index 3647a7703d6c..602f0286ad56 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateItem.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateItem.java @@ -6,46 +6,35 @@ import com.azure.communication.messages.models.channels.WhatsAppMessageTemplateItem; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * The message template as returned from the service. */ -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - include = JsonTypeInfo.As.PROPERTY, - property = "kind", - defaultImpl = MessageTemplateItem.class) -@JsonTypeName("MessageTemplateItem") -@JsonSubTypes({ @JsonSubTypes.Type(name = "whatsApp", value = WhatsAppMessageTemplateItem.class) }) @Immutable -public abstract class MessageTemplateItem { +public abstract class MessageTemplateItem implements JsonSerializable { /* * The template's name. */ @Generated - @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY) private String name; /* - * The template's language, in the ISO 639 format, consist of a two-letter language code followed by an optional - * two-letter country code, e.g., 'en' or 'en_US'. + * The template's language, in the ISO 639 format, consist of a two-letter language code followed by an optional two-letter country code, e.g., 'en' or 'en_US'. */ @Generated - @JsonProperty(value = "language") - private String language; + private final String language; /* * The aggregated template status. */ @Generated - @JsonProperty(value = "status") - private MessageTemplateStatus status; + private final MessageTemplateStatus status; /** * Creates an instance of MessageTemplateItem class. @@ -54,9 +43,8 @@ public abstract class MessageTemplateItem { * @param status the status value to set. */ @Generated - @JsonCreator - protected MessageTemplateItem(@JsonProperty(value = "language") String language, - @JsonProperty(value = "status") MessageTemplateStatus status) { + protected MessageTemplateItem(String language, MessageTemplateStatus status) { + this.kind = CommunicationMessagesChannel.fromString("MessageTemplateItem"); this.language = language; this.status = status; } @@ -72,8 +60,7 @@ public String getName() { } /** - * Get the language property: The template's language, in the ISO 639 format, consist of a two-letter language code - * followed by an optional two-letter country code, e.g., 'en' or 'en_US'. + * Get the language property: The template's language, in the ISO 639 format, consist of a two-letter language code followed by an optional two-letter country code, e.g., 'en' or 'en_US'. * * @return the language value. */ @@ -91,4 +78,121 @@ public String getLanguage() { public MessageTemplateStatus getStatus() { return this.status; } + + /* + * The type discriminator describing a template type. + */ + @Generated + private CommunicationMessagesChannel kind; + + /** + * Get the kind property: The type discriminator describing a template type. + * + * @return the kind value. + */ + @Generated + public CommunicationMessagesChannel getKind() { + return this.kind; + } + + /** + * Set the kind property: The type discriminator describing a template type. + * + * @param kind the kind value to set. + * @return the MessageTemplateItem object itself. + */ + @Generated + MessageTemplateItem setKind(CommunicationMessagesChannel kind) { + this.kind = kind; + return this; + } + + /** + * Set the name property: The template's name. + * + * @param name the name value to set. + * @return the MessageTemplateItem object itself. + */ + @Generated + MessageTemplateItem setName(String name) { + this.name = name; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("language", this.language); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MessageTemplateItem from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MessageTemplateItem if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the MessageTemplateItem. + */ + @Generated + public static MessageTemplateItem fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("whatsApp".equals(discriminatorValue)) { + return WhatsAppMessageTemplateItem.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static MessageTemplateItem fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + String language = null; + MessageTemplateStatus status = null; + CommunicationMessagesChannel kind = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("language".equals(fieldName)) { + language = reader.getString(); + } else if ("status".equals(fieldName)) { + status = MessageTemplateStatus.fromString(reader.getString()); + } else if ("kind".equals(fieldName)) { + kind = CommunicationMessagesChannel.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + MessageTemplateItem deserializedMessageTemplateItem = new MessageTemplateItem(language, status); + deserializedMessageTemplateItem.name = name; + deserializedMessageTemplateItem.kind = kind; + return deserializedMessageTemplateItem; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateLocation.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateLocation.java index 4795f995b677..299d68c96db6 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateLocation.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateLocation.java @@ -3,19 +3,18 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.messages.models; +import com.azure.core.models.GeoPosition; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.models.GeoPosition; -import com.fasterxml.jackson.annotation.JsonCreator; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; /** * The message template's location value information. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("location") @Fluent public final class MessageTemplateLocation extends MessageTemplateValue { @@ -23,29 +22,25 @@ public final class MessageTemplateLocation extends MessageTemplateValue { * The [Optional] name of the location. */ @Generated - @JsonProperty(value = "locationName") private String locationName; /* * The [Optional] address of the location. */ @Generated - @JsonProperty(value = "address") private String address; /* * The latitude of the location. */ @Generated - @JsonProperty(value = "latitude") - private double latitude; + private final double latitude; /* * The longitude of the location. */ @Generated - @JsonProperty(value = "longitude") - private double longitude; + private final double longitude; /** * Creates an instance of MessageTemplateLocation class. @@ -54,7 +49,6 @@ public final class MessageTemplateLocation extends MessageTemplateValue { * @param geoPosition the geoPosition value to set. */ @Generated - @JsonCreator public MessageTemplateLocation(@JsonProperty(value = "name") String refValue, GeoPosition geoPosition) { super(refValue); this.latitude = geoPosition.getLatitude(); @@ -113,4 +107,65 @@ public MessageTemplateLocation setAddress(String address) { public GeoPosition getPosition() { return new GeoPosition(this.longitude, this.latitude); } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", getRefValue()); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeDoubleField("latitude", this.latitude); + jsonWriter.writeDoubleField("longitude", this.longitude); + jsonWriter.writeStringField("locationName", this.locationName); + jsonWriter.writeStringField("address", this.address); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MessageTemplateLocation from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MessageTemplateLocation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the MessageTemplateLocation. + */ + @Generated + public static MessageTemplateLocation fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String refValue = null; + MessageTemplateValueKind kind = MessageTemplateValueKind.LOCATION; + double latitude = 0.0; + double longitude = 0.0; + String locationName = null; + String address = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + refValue = reader.getString(); + } else if ("kind".equals(fieldName)) { + kind = MessageTemplateValueKind.fromString(reader.getString()); + } else if ("latitude".equals(fieldName)) { + latitude = reader.getDouble(); + } else if ("longitude".equals(fieldName)) { + longitude = reader.getDouble(); + } else if ("locationName".equals(fieldName)) { + locationName = reader.getString(); + } else if ("address".equals(fieldName)) { + address = reader.getString(); + } else { + reader.skipChildren(); + } + } + MessageTemplateLocation deserializedMessageTemplateLocation + = new MessageTemplateLocation(refValue, latitude, longitude); + deserializedMessageTemplateLocation.setKind(kind); + deserializedMessageTemplateLocation.locationName = locationName; + deserializedMessageTemplateLocation.address = address; + return deserializedMessageTemplateLocation; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateQuickAction.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateQuickAction.java index 7a6dbef64e80..62b719522d4e 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateQuickAction.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateQuickAction.java @@ -5,16 +5,14 @@ import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * The message template's quick action value information. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("quickAction") @Fluent public final class MessageTemplateQuickAction extends MessageTemplateValue { @@ -22,14 +20,12 @@ public final class MessageTemplateQuickAction extends MessageTemplateValue { * The [Optional] quick action text */ @Generated - @JsonProperty(value = "text") private String text; /* * The [Optional] quick action payload */ @Generated - @JsonProperty(value = "payload") private String payload; /** @@ -38,9 +34,9 @@ public final class MessageTemplateQuickAction extends MessageTemplateValue { * @param refValue the refValue value to set. */ @Generated - @JsonCreator - public MessageTemplateQuickAction(@JsonProperty(value = "name") String refValue) { + public MessageTemplateQuickAction(String refValue) { super(refValue); + setKind(MessageTemplateValueKind.QUICK_ACTION); } /** @@ -86,4 +82,57 @@ public MessageTemplateQuickAction setPayload(String payload) { this.payload = payload; return this; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", getRefValue()); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeStringField("payload", this.payload); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MessageTemplateQuickAction from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MessageTemplateQuickAction if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the MessageTemplateQuickAction. + */ + @Generated + public static MessageTemplateQuickAction fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String refValue = null; + MessageTemplateValueKind kind = MessageTemplateValueKind.QUICK_ACTION; + String text = null; + String payload = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + refValue = reader.getString(); + } else if ("kind".equals(fieldName)) { + kind = MessageTemplateValueKind.fromString(reader.getString()); + } else if ("text".equals(fieldName)) { + text = reader.getString(); + } else if ("payload".equals(fieldName)) { + payload = reader.getString(); + } else { + reader.skipChildren(); + } + } + MessageTemplateQuickAction deserializedMessageTemplateQuickAction + = new MessageTemplateQuickAction(refValue); + deserializedMessageTemplateQuickAction.setKind(kind); + deserializedMessageTemplateQuickAction.text = text; + deserializedMessageTemplateQuickAction.payload = payload; + return deserializedMessageTemplateQuickAction; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateStatus.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateStatus.java index d4f4b752522c..620306f7a3b3 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateStatus.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateStatus.java @@ -5,7 +5,6 @@ import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; -import com.fasterxml.jackson.annotation.JsonCreator; import java.util.Collection; /** @@ -54,7 +53,6 @@ public MessageTemplateStatus() { * @return the corresponding MessageTemplateStatus. */ @Generated - @JsonCreator public static MessageTemplateStatus fromString(String name) { return fromString(name, MessageTemplateStatus.class); } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateText.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateText.java index 614ac5f083f2..2dec7749e53f 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateText.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateText.java @@ -5,16 +5,14 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * The message template's text value information. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("text") @Immutable public final class MessageTemplateText extends MessageTemplateValue { @@ -22,8 +20,7 @@ public final class MessageTemplateText extends MessageTemplateValue { * The text value. */ @Generated - @JsonProperty(value = "text") - private String text; + private final String text; /** * Creates an instance of MessageTemplateText class. @@ -32,10 +29,9 @@ public final class MessageTemplateText extends MessageTemplateValue { * @param text the text value to set. */ @Generated - @JsonCreator - public MessageTemplateText(@JsonProperty(value = "name") String refValue, - @JsonProperty(value = "text") String text) { + public MessageTemplateText(String refValue, String text) { super(refValue); + setKind(MessageTemplateValueKind.TEXT); this.text = text; } @@ -48,4 +44,50 @@ public MessageTemplateText(@JsonProperty(value = "name") String refValue, public String getText() { return this.text; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", getRefValue()); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("text", this.text); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MessageTemplateText from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MessageTemplateText if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the MessageTemplateText. + */ + @Generated + public static MessageTemplateText fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String refValue = null; + MessageTemplateValueKind kind = MessageTemplateValueKind.TEXT; + String text = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + refValue = reader.getString(); + } else if ("kind".equals(fieldName)) { + kind = MessageTemplateValueKind.fromString(reader.getString()); + } else if ("text".equals(fieldName)) { + text = reader.getString(); + } else { + reader.skipChildren(); + } + } + MessageTemplateText deserializedMessageTemplateText = new MessageTemplateText(refValue, text); + deserializedMessageTemplateText.setKind(kind); + return deserializedMessageTemplateText; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateValue.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateValue.java index 8bd743c3a719..01d2d68ed25f 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateValue.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateValue.java @@ -5,37 +5,23 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * The class describes a parameter of a template. */ -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - include = JsonTypeInfo.As.PROPERTY, - property = "kind", - defaultImpl = MessageTemplateValue.class) -@JsonTypeName("MessageTemplateValue") -@JsonSubTypes({ - @JsonSubTypes.Type(name = "text", value = MessageTemplateText.class), - @JsonSubTypes.Type(name = "image", value = MessageTemplateImage.class), - @JsonSubTypes.Type(name = "document", value = MessageTemplateDocument.class), - @JsonSubTypes.Type(name = "video", value = MessageTemplateVideo.class), - @JsonSubTypes.Type(name = "location", value = MessageTemplateLocation.class), - @JsonSubTypes.Type(name = "quickAction", value = MessageTemplateQuickAction.class) }) @Immutable -public abstract class MessageTemplateValue { +public abstract class MessageTemplateValue implements JsonSerializable { /* * Template binding reference name */ @Generated - @JsonProperty(value = "name") - private String refValue; + private final String refValue; /** * Creates an instance of MessageTemplateValue class. @@ -43,8 +29,8 @@ public abstract class MessageTemplateValue { * @param refValue the refValue value to set. */ @Generated - @JsonCreator - protected MessageTemplateValue(@JsonProperty(value = "name") String refValue) { + protected MessageTemplateValue(String refValue) { + this.kind = MessageTemplateValueKind.fromString("MessageTemplateValue"); this.refValue = refValue; } @@ -57,4 +43,111 @@ protected MessageTemplateValue(@JsonProperty(value = "name") String refValue) { public String getRefValue() { return this.refValue; } + + /* + * The type discriminator describing a template parameter type. + */ + @Generated + private MessageTemplateValueKind kind; + + /** + * Get the kind property: The type discriminator describing a template parameter type. + * + * @return the kind value. + */ + @Generated + public MessageTemplateValueKind getKind() { + return this.kind; + } + + /** + * Set the kind property: The type discriminator describing a template parameter type. + * + * @param kind the kind value to set. + * @return the MessageTemplateValue object itself. + */ + @Generated + MessageTemplateValue setKind(MessageTemplateValueKind kind) { + this.kind = kind; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.refValue); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MessageTemplateValue from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MessageTemplateValue if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the MessageTemplateValue. + */ + @Generated + public static MessageTemplateValue fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("text".equals(discriminatorValue)) { + return MessageTemplateText.fromJson(readerToUse.reset()); + } else if ("image".equals(discriminatorValue)) { + return MessageTemplateImage.fromJson(readerToUse.reset()); + } else if ("document".equals(discriminatorValue)) { + return MessageTemplateDocument.fromJson(readerToUse.reset()); + } else if ("video".equals(discriminatorValue)) { + return MessageTemplateVideo.fromJson(readerToUse.reset()); + } else if ("location".equals(discriminatorValue)) { + return MessageTemplateLocation.fromJson(readerToUse.reset()); + } else if ("quickAction".equals(discriminatorValue)) { + return MessageTemplateQuickAction.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static MessageTemplateValue fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String refValue = null; + MessageTemplateValueKind kind = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + refValue = reader.getString(); + } else if ("kind".equals(fieldName)) { + kind = MessageTemplateValueKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + MessageTemplateValue deserializedMessageTemplateValue = new MessageTemplateValue(refValue); + deserializedMessageTemplateValue.kind = kind; + return deserializedMessageTemplateValue; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateValueKind.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateValueKind.java new file mode 100644 index 000000000000..8da24bef0830 --- /dev/null +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateValueKind.java @@ -0,0 +1,81 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.communication.messages.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The type of the template parameter. + */ +public final class MessageTemplateValueKind extends ExpandableStringEnum { + + /** + * The text template parameter type. + */ + @Generated + public static final MessageTemplateValueKind TEXT = fromString("text"); + + /** + * The image template parameter type. + */ + @Generated + public static final MessageTemplateValueKind IMAGE = fromString("image"); + + /** + * The document template parameter type. + */ + @Generated + public static final MessageTemplateValueKind DOCUMENT = fromString("document"); + + /** + * The video template parameter type. + */ + @Generated + public static final MessageTemplateValueKind VIDEO = fromString("video"); + + /** + * The location template parameter type. + */ + @Generated + public static final MessageTemplateValueKind LOCATION = fromString("location"); + + /** + * The quick action template parameter type. + */ + @Generated + public static final MessageTemplateValueKind QUICK_ACTION = fromString("quickAction"); + + /** + * Creates a new instance of MessageTemplateValueKind value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public MessageTemplateValueKind() { + } + + /** + * Creates or finds a MessageTemplateValueKind from its string representation. + * + * @param name a name to look for. + * @return the corresponding MessageTemplateValueKind. + */ + @Generated + public static MessageTemplateValueKind fromString(String name) { + return fromString(name, MessageTemplateValueKind.class); + } + + /** + * Gets known MessageTemplateValueKind values. + * + * @return known MessageTemplateValueKind values. + */ + @Generated + public static Collection values() { + return values(MessageTemplateValueKind.class); + } +} diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateVideo.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateVideo.java index e2dbf8220477..7df1b55dfac6 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateVideo.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/MessageTemplateVideo.java @@ -5,16 +5,14 @@ import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * The message template's video value information. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("video") @Fluent public final class MessageTemplateVideo extends MessageTemplateValue { @@ -22,21 +20,18 @@ public final class MessageTemplateVideo extends MessageTemplateValue { * The (public) URL of the media. */ @Generated - @JsonProperty(value = "url") - private String url; + private final String url; /* * The [optional] caption of the media object. */ @Generated - @JsonProperty(value = "caption") private String caption; /* * The [optional] filename of the media file. */ @Generated - @JsonProperty(value = "fileName") private String fileName; /** @@ -46,10 +41,9 @@ public final class MessageTemplateVideo extends MessageTemplateValue { * @param url the url value to set. */ @Generated - @JsonCreator - public MessageTemplateVideo(@JsonProperty(value = "name") String refValue, - @JsonProperty(value = "url") String url) { + public MessageTemplateVideo(String refValue, String url) { super(refValue); + setKind(MessageTemplateValueKind.VIDEO); this.url = url; } @@ -106,4 +100,60 @@ public MessageTemplateVideo setFileName(String fileName) { this.fileName = fileName; return this; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", getRefValue()); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("url", this.url); + jsonWriter.writeStringField("caption", this.caption); + jsonWriter.writeStringField("fileName", this.fileName); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of MessageTemplateVideo from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of MessageTemplateVideo if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the MessageTemplateVideo. + */ + @Generated + public static MessageTemplateVideo fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String refValue = null; + MessageTemplateValueKind kind = MessageTemplateValueKind.VIDEO; + String url = null; + String caption = null; + String fileName = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + refValue = reader.getString(); + } else if ("kind".equals(fieldName)) { + kind = MessageTemplateValueKind.fromString(reader.getString()); + } else if ("url".equals(fieldName)) { + url = reader.getString(); + } else if ("caption".equals(fieldName)) { + caption = reader.getString(); + } else if ("fileName".equals(fieldName)) { + fileName = reader.getString(); + } else { + reader.skipChildren(); + } + } + MessageTemplateVideo deserializedMessageTemplateVideo = new MessageTemplateVideo(refValue, url); + deserializedMessageTemplateVideo.setKind(kind); + deserializedMessageTemplateVideo.caption = caption; + deserializedMessageTemplateVideo.fileName = fileName; + return deserializedMessageTemplateVideo; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/NotificationContent.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/NotificationContent.java index a5d15b252f74..66c2ba9a5c75 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/NotificationContent.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/NotificationContent.java @@ -5,42 +5,30 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.util.List; /** * Details of the message to send. */ -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - include = JsonTypeInfo.As.PROPERTY, - property = "kind", - defaultImpl = NotificationContent.class) -@JsonTypeName("NotificationContent") -@JsonSubTypes({ - @JsonSubTypes.Type(name = "text", value = TextNotificationContent.class), - @JsonSubTypes.Type(name = "image", value = MediaNotificationContent.class), - @JsonSubTypes.Type(name = "template", value = TemplateNotificationContent.class) }) @Immutable -public abstract class NotificationContent { +public abstract class NotificationContent implements JsonSerializable { /* * The Channel Registration ID for the Business Identifier. */ @Generated - @JsonProperty(value = "channelRegistrationId") - private String channelRegistrationId; + private final String channelRegistrationId; /* * The native external platform user identifiers of the recipient. */ @Generated - @JsonProperty(value = "to") - private List to; + private final List to; /** * Creates an instance of NotificationContent class. @@ -49,9 +37,8 @@ public abstract class NotificationContent { * @param to the to value to set. */ @Generated - @JsonCreator - protected NotificationContent(@JsonProperty(value = "channelRegistrationId") String channelRegistrationId, - @JsonProperty(value = "to") List to) { + protected NotificationContent(String channelRegistrationId, List to) { + this.kind = CommunicationMessageKind.fromString("NotificationContent"); this.channelRegistrationId = channelRegistrationId; this.to = to; } @@ -75,4 +62,109 @@ public String getChannelRegistrationId() { public List getTo() { return this.to; } + + /* + * The type discriminator describing a notification type. + */ + @Generated + private CommunicationMessageKind kind; + + /** + * Get the kind property: The type discriminator describing a notification type. + * + * @return the kind value. + */ + @Generated + public CommunicationMessageKind getKind() { + return this.kind; + } + + /** + * Set the kind property: The type discriminator describing a notification type. + * + * @param kind the kind value to set. + * @return the NotificationContent object itself. + */ + @Generated + NotificationContent setKind(CommunicationMessageKind kind) { + this.kind = kind; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("channelRegistrationId", this.channelRegistrationId); + jsonWriter.writeArrayField("to", this.to, (writer, element) -> writer.writeString(element)); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of NotificationContent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of NotificationContent if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the NotificationContent. + */ + @Generated + public static NotificationContent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("text".equals(discriminatorValue)) { + return TextNotificationContent.fromJson(readerToUse.reset()); + } else if ("image".equals(discriminatorValue)) { + return MediaNotificationContent.fromJson(readerToUse.reset()); + } else if ("template".equals(discriminatorValue)) { + return TemplateNotificationContent.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static NotificationContent fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String channelRegistrationId = null; + List to = null; + CommunicationMessageKind kind = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("channelRegistrationId".equals(fieldName)) { + channelRegistrationId = reader.getString(); + } else if ("to".equals(fieldName)) { + to = reader.readArray(reader1 -> reader1.getString()); + } else if ("kind".equals(fieldName)) { + kind = CommunicationMessageKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + NotificationContent deserializedNotificationContent = new NotificationContent(channelRegistrationId, to); + deserializedNotificationContent.kind = kind; + return deserializedNotificationContent; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/SendMessageResult.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/SendMessageResult.java index 1b84855cc9e6..58d68ec79a3f 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/SendMessageResult.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/SendMessageResult.java @@ -5,22 +5,24 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.util.List; /** * Result of the send message operation. */ @Immutable -public final class SendMessageResult { +public final class SendMessageResult implements JsonSerializable { /* * Receipts of the send message operation. */ @Generated - @JsonProperty(value = "receipts") - private List receipts; + private final List receipts; /** * Creates an instance of SendMessageResult class. @@ -28,8 +30,7 @@ public final class SendMessageResult { * @param receipts the receipts value to set. */ @Generated - @JsonCreator - private SendMessageResult(@JsonProperty(value = "receipts") List receipts) { + private SendMessageResult(List receipts) { this.receipts = receipts; } @@ -42,4 +43,40 @@ private SendMessageResult(@JsonProperty(value = "receipts") List public List getReceipts() { return this.receipts; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("receipts", this.receipts, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SendMessageResult from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SendMessageResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the SendMessageResult. + */ + @Generated + public static SendMessageResult fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + List receipts = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("receipts".equals(fieldName)) { + receipts = reader.readArray(reader1 -> MessageReceipt.fromJson(reader1)); + } else { + reader.skipChildren(); + } + } + return new SendMessageResult(receipts); + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/TemplateNotificationContent.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/TemplateNotificationContent.java index 1d5ecd5b0e75..09ce6de76a43 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/TemplateNotificationContent.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/TemplateNotificationContent.java @@ -5,17 +5,15 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.util.List; /** * A request to send a template notification. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("template") @Immutable public final class TemplateNotificationContent extends NotificationContent { @@ -23,8 +21,7 @@ public final class TemplateNotificationContent extends NotificationContent { * The template object used to create templates. */ @Generated - @JsonProperty(value = "template") - private MessageTemplate template; + private final MessageTemplate template; /** * Creates an instance of TemplateNotificationContent class. @@ -34,10 +31,9 @@ public final class TemplateNotificationContent extends NotificationContent { * @param template the template value to set. */ @Generated - @JsonCreator - public TemplateNotificationContent(@JsonProperty(value = "channelRegistrationId") String channelRegistrationId, - @JsonProperty(value = "to") List to, @JsonProperty(value = "template") MessageTemplate template) { + public TemplateNotificationContent(String channelRegistrationId, List to, MessageTemplate template) { super(channelRegistrationId, to); + setKind(CommunicationMessageKind.TEMPLATE); this.template = template; } @@ -50,4 +46,55 @@ public TemplateNotificationContent(@JsonProperty(value = "channelRegistrationId" public MessageTemplate getTemplate() { return this.template; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("channelRegistrationId", getChannelRegistrationId()); + jsonWriter.writeArrayField("to", getTo(), (writer, element) -> writer.writeString(element)); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeJsonField("template", this.template); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TemplateNotificationContent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TemplateNotificationContent if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TemplateNotificationContent. + */ + @Generated + public static TemplateNotificationContent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String channelRegistrationId = null; + List to = null; + CommunicationMessageKind kind = CommunicationMessageKind.TEMPLATE; + MessageTemplate template = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("channelRegistrationId".equals(fieldName)) { + channelRegistrationId = reader.getString(); + } else if ("to".equals(fieldName)) { + to = reader.readArray(reader1 -> reader1.getString()); + } else if ("kind".equals(fieldName)) { + kind = CommunicationMessageKind.fromString(reader.getString()); + } else if ("template".equals(fieldName)) { + template = MessageTemplate.fromJson(reader); + } else { + reader.skipChildren(); + } + } + TemplateNotificationContent deserializedTemplateNotificationContent + = new TemplateNotificationContent(channelRegistrationId, to, template); + deserializedTemplateNotificationContent.setKind(kind); + return deserializedTemplateNotificationContent; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/TextNotificationContent.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/TextNotificationContent.java index 26172050593b..bcb6b3608bf6 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/TextNotificationContent.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/TextNotificationContent.java @@ -5,17 +5,15 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.util.List; /** * A request to send a text notification. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("text") @Immutable public final class TextNotificationContent extends NotificationContent { @@ -23,8 +21,7 @@ public final class TextNotificationContent extends NotificationContent { * Message content. */ @Generated - @JsonProperty(value = "content") - private String content; + private final String content; /** * Creates an instance of TextNotificationContent class. @@ -34,10 +31,9 @@ public final class TextNotificationContent extends NotificationContent { * @param content the content value to set. */ @Generated - @JsonCreator - public TextNotificationContent(@JsonProperty(value = "channelRegistrationId") String channelRegistrationId, - @JsonProperty(value = "to") List to, @JsonProperty(value = "content") String content) { + public TextNotificationContent(String channelRegistrationId, List to, String content) { super(channelRegistrationId, to); + setKind(CommunicationMessageKind.TEXT); this.content = content; } @@ -50,4 +46,55 @@ public TextNotificationContent(@JsonProperty(value = "channelRegistrationId") St public String getContent() { return this.content; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("channelRegistrationId", getChannelRegistrationId()); + jsonWriter.writeArrayField("to", getTo(), (writer, element) -> writer.writeString(element)); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeStringField("content", this.content); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TextNotificationContent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TextNotificationContent if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TextNotificationContent. + */ + @Generated + public static TextNotificationContent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String channelRegistrationId = null; + List to = null; + CommunicationMessageKind kind = CommunicationMessageKind.TEXT; + String content = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("channelRegistrationId".equals(fieldName)) { + channelRegistrationId = reader.getString(); + } else if ("to".equals(fieldName)) { + to = reader.readArray(reader1 -> reader1.getString()); + } else if ("kind".equals(fieldName)) { + kind = CommunicationMessageKind.fromString(reader.getString()); + } else if ("content".equals(fieldName)) { + content = reader.getString(); + } else { + reader.skipChildren(); + } + } + TextNotificationContent deserializedTextNotificationContent + = new TextNotificationContent(channelRegistrationId, to, content); + deserializedTextNotificationContent.setKind(kind); + return deserializedTextNotificationContent; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageButtonSubType.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageButtonSubType.java index 80c81026e1e4..aa99b03a2628 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageButtonSubType.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageButtonSubType.java @@ -5,7 +5,6 @@ import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; -import com.fasterxml.jackson.annotation.JsonCreator; import java.util.Collection; /** @@ -42,7 +41,6 @@ public WhatsAppMessageButtonSubType() { * @return the corresponding WhatsAppMessageButtonSubType. */ @Generated - @JsonCreator public static WhatsAppMessageButtonSubType fromString(String name) { return fromString(name, WhatsAppMessageButtonSubType.class); } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateBindings.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateBindings.java index 1e7c09255a0c..900b48bdf4a9 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateBindings.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateBindings.java @@ -4,18 +4,18 @@ package com.azure.communication.messages.models.channels; import com.azure.communication.messages.models.MessageTemplateBindings; +import com.azure.communication.messages.models.MessageTemplateBindingsKind; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; import java.util.List; /** * The template bindings for WhatsApp. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("whatsApp") @Fluent public final class WhatsAppMessageTemplateBindings extends MessageTemplateBindings { @@ -23,28 +23,24 @@ public final class WhatsAppMessageTemplateBindings extends MessageTemplateBindin * The header template bindings */ @Generated - @JsonProperty(value = "header") private List headerProperty; /* * The body template bindings */ @Generated - @JsonProperty(value = "body") private List body; /* * The footer template bindings */ @Generated - @JsonProperty(value = "footer") private List footer; /* * The button template bindings */ @Generated - @JsonProperty(value = "buttons") private List buttons; /** @@ -52,6 +48,7 @@ public final class WhatsAppMessageTemplateBindings extends MessageTemplateBindin */ @Generated public WhatsAppMessageTemplateBindings() { + setKind(MessageTemplateBindingsKind.WHATS_APP); } /** @@ -142,4 +139,61 @@ public WhatsAppMessageTemplateBindings setButtons(List writer.writeJson(element)); + jsonWriter.writeArrayField("body", this.body, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeArrayField("footer", this.footer, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeArrayField("buttons", this.buttons, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of WhatsAppMessageTemplateBindings from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of WhatsAppMessageTemplateBindings if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the WhatsAppMessageTemplateBindings. + */ + @Generated + public static WhatsAppMessageTemplateBindings fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + WhatsAppMessageTemplateBindings deserializedWhatsAppMessageTemplateBindings + = new WhatsAppMessageTemplateBindings(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedWhatsAppMessageTemplateBindings + .setKind(MessageTemplateBindingsKind.fromString(reader.getString())); + } else if ("header".equals(fieldName)) { + List headerProperty + = reader.readArray(reader1 -> WhatsAppMessageTemplateBindingsComponent.fromJson(reader1)); + deserializedWhatsAppMessageTemplateBindings.headerProperty = headerProperty; + } else if ("body".equals(fieldName)) { + List body + = reader.readArray(reader1 -> WhatsAppMessageTemplateBindingsComponent.fromJson(reader1)); + deserializedWhatsAppMessageTemplateBindings.body = body; + } else if ("footer".equals(fieldName)) { + List footer + = reader.readArray(reader1 -> WhatsAppMessageTemplateBindingsComponent.fromJson(reader1)); + deserializedWhatsAppMessageTemplateBindings.footer = footer; + } else if ("buttons".equals(fieldName)) { + List buttons + = reader.readArray(reader1 -> WhatsAppMessageTemplateBindingsButton.fromJson(reader1)); + deserializedWhatsAppMessageTemplateBindings.buttons = buttons; + } else { + reader.skipChildren(); + } + } + return deserializedWhatsAppMessageTemplateBindings; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateBindingsButton.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateBindingsButton.java index 125ae061b8f8..7e260c1a90c5 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateBindingsButton.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateBindingsButton.java @@ -5,28 +5,30 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * The template bindings component button for WhatsApp. */ @Immutable -public final class WhatsAppMessageTemplateBindingsButton { +public final class WhatsAppMessageTemplateBindingsButton + implements JsonSerializable { /* * The WhatsApp button sub type */ @Generated - @JsonProperty(value = "subType") - private WhatsAppMessageButtonSubType subType; + private final WhatsAppMessageButtonSubType subType; /* * The name of the referenced item in the template values. */ @Generated - @JsonProperty(value = "refValue") - private String refValue; + private final String refValue; /** * Creates an instance of WhatsAppMessageTemplateBindingsButton class. @@ -35,9 +37,7 @@ public final class WhatsAppMessageTemplateBindingsButton { * @param refValue the refValue value to set. */ @Generated - @JsonCreator - public WhatsAppMessageTemplateBindingsButton(@JsonProperty(value = "subType") WhatsAppMessageButtonSubType subType, - @JsonProperty(value = "refValue") String refValue) { + public WhatsAppMessageTemplateBindingsButton(WhatsAppMessageButtonSubType subType, String refValue) { this.subType = subType; this.refValue = refValue; } @@ -61,4 +61,44 @@ public WhatsAppMessageButtonSubType getSubType() { public String getRefValue() { return this.refValue; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("subType", this.subType == null ? null : this.subType.toString()); + jsonWriter.writeStringField("refValue", this.refValue); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of WhatsAppMessageTemplateBindingsButton from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of WhatsAppMessageTemplateBindingsButton if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the WhatsAppMessageTemplateBindingsButton. + */ + @Generated + public static WhatsAppMessageTemplateBindingsButton fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + WhatsAppMessageButtonSubType subType = null; + String refValue = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("subType".equals(fieldName)) { + subType = WhatsAppMessageButtonSubType.fromString(reader.getString()); + } else if ("refValue".equals(fieldName)) { + refValue = reader.getString(); + } else { + reader.skipChildren(); + } + } + return new WhatsAppMessageTemplateBindingsButton(subType, refValue); + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateBindingsComponent.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateBindingsComponent.java index fe8a07533c45..103c04f86b35 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateBindingsComponent.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateBindingsComponent.java @@ -5,21 +5,24 @@ import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; /** * The template bindings component for WhatsApp. */ @Immutable -public final class WhatsAppMessageTemplateBindingsComponent { +public final class WhatsAppMessageTemplateBindingsComponent + implements JsonSerializable { /* * The name of the referenced item in the template values. */ @Generated - @JsonProperty(value = "refValue") - private String refValue; + private final String refValue; /** * Creates an instance of WhatsAppMessageTemplateBindingsComponent class. @@ -27,8 +30,7 @@ public final class WhatsAppMessageTemplateBindingsComponent { * @param refValue the refValue value to set. */ @Generated - @JsonCreator - public WhatsAppMessageTemplateBindingsComponent(@JsonProperty(value = "refValue") String refValue) { + public WhatsAppMessageTemplateBindingsComponent(String refValue) { this.refValue = refValue; } @@ -41,4 +43,40 @@ public WhatsAppMessageTemplateBindingsComponent(@JsonProperty(value = "refValue" public String getRefValue() { return this.refValue; } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("refValue", this.refValue); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of WhatsAppMessageTemplateBindingsComponent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of WhatsAppMessageTemplateBindingsComponent if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the WhatsAppMessageTemplateBindingsComponent. + */ + @Generated + public static WhatsAppMessageTemplateBindingsComponent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String refValue = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("refValue".equals(fieldName)) { + refValue = reader.getString(); + } else { + reader.skipChildren(); + } + } + return new WhatsAppMessageTemplateBindingsComponent(refValue); + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateItem.java b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateItem.java index 75fe9a102c93..f882d58d9ce6 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateItem.java +++ b/sdk/communication/azure-communication-messages/src/main/java/com/azure/communication/messages/models/channels/WhatsAppMessageTemplateItem.java @@ -3,21 +3,20 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.communication.messages.models.channels; +import java.io.IOException; +import com.azure.communication.messages.models.CommunicationMessagesChannel; import com.azure.communication.messages.models.MessageTemplateItem; import com.azure.communication.messages.models.MessageTemplateStatus; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; import com.azure.core.util.BinaryData; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeName; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; /** * The WhatsApp-specific template response contract. */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind") -@JsonTypeName("whatsApp") @Immutable public final class WhatsAppMessageTemplateItem extends MessageTemplateItem { @@ -25,7 +24,6 @@ public final class WhatsAppMessageTemplateItem extends MessageTemplateItem { * WhatsApp platform's template content. This is the payload returned from WhatsApp API. */ @Generated - @JsonProperty(value = "content") private Object content; /** @@ -35,10 +33,9 @@ public final class WhatsAppMessageTemplateItem extends MessageTemplateItem { * @param status the status value to set. */ @Generated - @JsonCreator - private WhatsAppMessageTemplateItem(@JsonProperty(value = "language") String language, - @JsonProperty(value = "status") MessageTemplateStatus status) { + private WhatsAppMessageTemplateItem(String language, MessageTemplateStatus status) { super(language, status); + setKind(CommunicationMessagesChannel.WHATS_APP); } /** @@ -51,4 +48,60 @@ public BinaryData getContent() { Object returnValue = this.content; return BinaryData.fromObject(returnValue); } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("language", getLanguage()); + jsonWriter.writeStringField("status", getStatus() == null ? null : getStatus().toString()); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + jsonWriter.writeUntypedField("content", this.content); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of WhatsAppMessageTemplateItem from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of WhatsAppMessageTemplateItem if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the WhatsAppMessageTemplateItem. + */ + @Generated + public static WhatsAppMessageTemplateItem fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + String language = null; + MessageTemplateStatus status = null; + CommunicationMessagesChannel kind = CommunicationMessagesChannel.WHATS_APP; + Object content = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("language".equals(fieldName)) { + language = reader.getString(); + } else if ("status".equals(fieldName)) { + status = MessageTemplateStatus.fromString(reader.getString()); + } else if ("kind".equals(fieldName)) { + kind = CommunicationMessagesChannel.fromString(reader.getString()); + } else if ("content".equals(fieldName)) { + content = reader.readUntyped(); + } else { + reader.skipChildren(); + } + } + WhatsAppMessageTemplateItem deserializedWhatsAppMessageTemplateItem + = new WhatsAppMessageTemplateItem(language, status); + deserializedWhatsAppMessageTemplateItem.setName(name); + deserializedWhatsAppMessageTemplateItem.setKind(kind); + deserializedWhatsAppMessageTemplateItem.content = content; + return deserializedWhatsAppMessageTemplateItem; + }); + } } diff --git a/sdk/communication/azure-communication-messages/src/main/java/module-info.java b/sdk/communication/azure-communication-messages/src/main/java/module-info.java index 918d2a8dde93..925460c9d77a 100644 --- a/sdk/communication/azure-communication-messages/src/main/java/module-info.java +++ b/sdk/communication/azure-communication-messages/src/main/java/module-info.java @@ -4,11 +4,12 @@ module com.azure.communication.messages { requires transitive com.azure.core; + requires transitive com.azure.json; requires transitive com.azure.communication.common; exports com.azure.communication.messages; exports com.azure.communication.messages.models.channels; exports com.azure.communication.messages.models; - opens com.azure.communication.messages.implementation.models to com.azure.core, com.fasterxml.jackson.databind; - opens com.azure.communication.messages.models.channels to com.azure.core, com.fasterxml.jackson.databind; - opens com.azure.communication.messages.models to com.azure.core, com.fasterxml.jackson.databind; + opens com.azure.communication.messages.implementation.models to com.azure.core; + opens com.azure.communication.messages.models.channels to com.azure.core; + opens com.azure.communication.messages.models to com.azure.core; } diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/BlocklistAsyncClient.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/BlocklistAsyncClient.java index 58f652c3884f..ff9ab62f05db 100644 --- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/BlocklistAsyncClient.java +++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/BlocklistAsyncClient.java @@ -4,6 +4,7 @@ package com.azure.ai.contentsafety; import com.azure.ai.contentsafety.implementation.BlocklistClientImpl; +import com.azure.ai.contentsafety.implementation.JsonMergePatchHelper; import com.azure.ai.contentsafety.models.AddOrUpdateTextBlocklistItemsOptions; import com.azure.ai.contentsafety.models.AddOrUpdateTextBlocklistItemsResult; import com.azure.ai.contentsafety.models.RemoveTextBlocklistItemsOptions; @@ -50,11 +51,8 @@ public final class BlocklistAsyncClient { /** * Add or update BlocklistItems To Text Blocklist * - * Add or update blocklistItems to a text blocklist. You can add or update at most 100 blocklistItems in one - * request. - *

- * Request Body Schema - *

+ * Add or update blocklistItems to a text blocklist. You can add or update at most 100 blocklistItems in one request. + *

Request Body Schema

*
{@code
      * {
      *     blocklistItems (Required): [
@@ -66,9 +64,7 @@ public final class BlocklistAsyncClient {
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItems (Required): [
@@ -88,8 +84,7 @@ public final class BlocklistAsyncClient {
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the response of adding blocklistItems to the text blocklist along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return the response of adding blocklistItems to the text blocklist along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -102,18 +97,14 @@ public Mono> addOrUpdateBlocklistItemsWithResponse(String n
      * Create Or Update Text Blocklist
      *
      * Updates a text blocklist. If the blocklistName does not exist, a new blocklist will be created.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
      *     description: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -134,8 +125,6 @@ public Mono> addOrUpdateBlocklistItemsWithResponse(String n
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> createOrUpdateTextBlocklistWithResponse(String name, BinaryData options,
         RequestOptions requestOptions) {
-        // Convenience API is not generated, as operation 'createOrUpdateTextBlocklist' is
-        // 'application/merge-patch+json' and stream-style-serialization is not enabled
         return this.serviceClient.createOrUpdateTextBlocklistWithResponseAsync(name, options, requestOptions);
     }
 
@@ -162,9 +151,7 @@ public Mono> deleteTextBlocklistWithResponse(String name, Request
      * Get Text Blocklist By blocklistName
      *
      * Returns text blocklist details.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -190,9 +177,7 @@ public Mono> getTextBlocklistWithResponse(String name, Requ
      * Get BlocklistItem By blocklistName And blocklistItemId
      *
      * Get blocklistItem by blocklistName and blocklistItemId from a text blocklist.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItemId: String (Required)
@@ -208,8 +193,7 @@ public Mono> getTextBlocklistWithResponse(String name, Requ
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return blocklistItem by blocklistName and blocklistItemId from a text blocklist along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return blocklistItem by blocklistName and blocklistItemId from a text blocklist along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -222,40 +206,16 @@ public Mono> getTextBlocklistItemWithResponse(String name,
      * Get All BlocklistItems By blocklistName
      *
      * Get all blocklistItems in a text blocklist.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe number of result items to return.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe number of result items to return.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItemId: String (Required)
@@ -282,9 +242,7 @@ public PagedFlux listTextBlocklistItems(String name, RequestOptions
      * Get All Text Blocklists
      *
      * Get all text blocklists details.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -309,9 +267,7 @@ public PagedFlux listTextBlocklists(RequestOptions requestOptions) {
      * Remove BlocklistItems From Text Blocklist
      *
      * Remove blocklistItems from a text blocklist. You can remove at most 100 BlocklistItems in one request.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     blocklistItemIds (Required): [
@@ -339,8 +295,7 @@ public Mono> removeBlocklistItemsWithResponse(String name, Binary
     /**
      * Add or update BlocklistItems To Text Blocklist
      *
-     * Add or update blocklistItems to a text blocklist. You can add or update at most 100 blocklistItems in one
-     * request.
+     * Add or update blocklistItems to a text blocklist. You can add or update at most 100 blocklistItems in one request.
      *
      * @param name Text blocklist name.
      * @param options Options for adding or updating blocklist items.
@@ -421,8 +376,7 @@ public Mono getTextBlocklist(String name) {
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return blocklistItem by blocklistName and blocklistItemId from a text blocklist on successful completion of
-     * {@link Mono}.
+     * @return blocklistItem by blocklistName and blocklistItemId from a text blocklist on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -462,11 +416,13 @@ public PagedFlux listTextBlocklistItems(String name, Integer
         }
         PagedFlux pagedFluxResponse = listTextBlocklistItems(name, requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(TextBlocklistItem.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -494,11 +450,13 @@ public PagedFlux listTextBlocklistItems(String name) {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listTextBlocklistItems(name, requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(TextBlocklistItem.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -524,11 +482,13 @@ public PagedFlux listTextBlocklists() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listTextBlocklists(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(TextBlocklist.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -558,4 +518,32 @@ public Mono removeBlocklistItems(String name, RemoveTextBlocklistItemsOpti
         return removeBlocklistItemsWithResponse(name, BinaryData.fromObject(options), requestOptions)
             .flatMap(FluxUtil::toMono);
     }
+
+    /**
+     * Create Or Update Text Blocklist
+     *
+     * Updates a text blocklist. If the blocklistName does not exist, a new blocklist will be created.
+     *
+     * @param name Text blocklist name.
+     * @param options The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return text Blocklist on successful completion of {@link Mono}.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public Mono createOrUpdateTextBlocklist(String name, TextBlocklist options) {
+        // Generated convenience method for createOrUpdateTextBlocklistWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getTextBlocklistAccessor().prepareModelForJsonMergePatch(options, true);
+        BinaryData optionsInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(options).toBytes());
+        JsonMergePatchHelper.getTextBlocklistAccessor().prepareModelForJsonMergePatch(options, false);
+        return createOrUpdateTextBlocklistWithResponse(name, optionsInBinaryData, requestOptions)
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(TextBlocklist.class));
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/BlocklistClient.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/BlocklistClient.java
index 9d50db14d61a..374f86317f2e 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/BlocklistClient.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/BlocklistClient.java
@@ -4,6 +4,7 @@
 package com.azure.ai.contentsafety;
 
 import com.azure.ai.contentsafety.implementation.BlocklistClientImpl;
+import com.azure.ai.contentsafety.implementation.JsonMergePatchHelper;
 import com.azure.ai.contentsafety.models.AddOrUpdateTextBlocklistItemsOptions;
 import com.azure.ai.contentsafety.models.AddOrUpdateTextBlocklistItemsResult;
 import com.azure.ai.contentsafety.models.RemoveTextBlocklistItemsOptions;
@@ -44,11 +45,8 @@ public final class BlocklistClient {
     /**
      * Add or update BlocklistItems To Text Blocklist
      *
-     * Add or update blocklistItems to a text blocklist. You can add or update at most 100 blocklistItems in one
-     * request.
-     * 

- * Request Body Schema - *

+ * Add or update blocklistItems to a text blocklist. You can add or update at most 100 blocklistItems in one request. + *

Request Body Schema

*
{@code
      * {
      *     blocklistItems (Required): [
@@ -60,9 +58,7 @@ public final class BlocklistClient {
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItems (Required): [
@@ -95,18 +91,14 @@ public Response addOrUpdateBlocklistItemsWithResponse(String name, B
      * Create Or Update Text Blocklist
      *
      * Updates a text blocklist. If the blocklistName does not exist, a new blocklist will be created.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
      *     description: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -127,8 +119,6 @@ public Response addOrUpdateBlocklistItemsWithResponse(String name, B
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Response createOrUpdateTextBlocklistWithResponse(String name, BinaryData options,
         RequestOptions requestOptions) {
-        // Convenience API is not generated, as operation 'createOrUpdateTextBlocklist' is
-        // 'application/merge-patch+json' and stream-style-serialization is not enabled
         return this.serviceClient.createOrUpdateTextBlocklistWithResponse(name, options, requestOptions);
     }
 
@@ -155,9 +145,7 @@ public Response deleteTextBlocklistWithResponse(String name, RequestOption
      * Get Text Blocklist By blocklistName
      *
      * Returns text blocklist details.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -183,9 +171,7 @@ public Response getTextBlocklistWithResponse(String name, RequestOpt
      * Get BlocklistItem By blocklistName And blocklistItemId
      *
      * Get blocklistItem by blocklistName and blocklistItemId from a text blocklist.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItemId: String (Required)
@@ -214,40 +200,16 @@ public Response getTextBlocklistItemWithResponse(String name, String
      * Get All BlocklistItems By blocklistName
      *
      * Get all blocklistItems in a text blocklist.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe number of result items to return.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe number of result items to return.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItemId: String (Required)
@@ -274,9 +236,7 @@ public PagedIterable listTextBlocklistItems(String name, RequestOpti
      * Get All Text Blocklists
      *
      * Get all text blocklists details.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -301,9 +261,7 @@ public PagedIterable listTextBlocklists(RequestOptions requestOption
      * Remove BlocklistItems From Text Blocklist
      *
      * Remove blocklistItems from a text blocklist. You can remove at most 100 BlocklistItems in one request.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     blocklistItemIds (Required): [
@@ -331,8 +289,7 @@ public Response removeBlocklistItemsWithResponse(String name, BinaryData o
     /**
      * Add or update BlocklistItems To Text Blocklist
      *
-     * Add or update blocklistItems to a text blocklist. You can add or update at most 100 blocklistItems in one
-     * request.
+     * Add or update blocklistItems to a text blocklist. You can add or update at most 100 blocklistItems in one request.
      *
      * @param name Text blocklist name.
      * @param options Options for adding or updating blocklist items.
@@ -517,4 +474,31 @@ public void removeBlocklistItems(String name, RemoveTextBlocklistItemsOptions op
         RequestOptions requestOptions = new RequestOptions();
         removeBlocklistItemsWithResponse(name, BinaryData.fromObject(options), requestOptions).getValue();
     }
+
+    /**
+     * Create Or Update Text Blocklist
+     *
+     * Updates a text blocklist. If the blocklistName does not exist, a new blocklist will be created.
+     *
+     * @param name Text blocklist name.
+     * @param options The resource instance.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws HttpResponseException thrown if the request is rejected by server.
+     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
+     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
+     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return text Blocklist.
+     */
+    @Generated
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public TextBlocklist createOrUpdateTextBlocklist(String name, TextBlocklist options) {
+        // Generated convenience method for createOrUpdateTextBlocklistWithResponse
+        RequestOptions requestOptions = new RequestOptions();
+        JsonMergePatchHelper.getTextBlocklistAccessor().prepareModelForJsonMergePatch(options, true);
+        BinaryData optionsInBinaryData = BinaryData.fromBytes(BinaryData.fromObject(options).toBytes());
+        JsonMergePatchHelper.getTextBlocklistAccessor().prepareModelForJsonMergePatch(options, false);
+        return createOrUpdateTextBlocklistWithResponse(name, optionsInBinaryData, requestOptions).getValue()
+            .toObject(TextBlocklist.class);
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/BlocklistClientBuilder.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/BlocklistClientBuilder.java
index 69a756753b58..8787381fbd60 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/BlocklistClientBuilder.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/BlocklistClientBuilder.java
@@ -23,8 +23,8 @@
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
 import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.KeyCredentialPolicy;
@@ -302,7 +302,8 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
@@ -313,12 +314,15 @@ private HttpPipeline createHttpPipeline() {
         if (tokenCredential != null) {
             policies.add(new BearerTokenAuthenticationPolicy(tokenCredential, DEFAULT_SCOPES));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/ContentSafetyAsyncClient.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/ContentSafetyAsyncClient.java
index b689c8a0642e..00ecb5c930ff 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/ContentSafetyAsyncClient.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/ContentSafetyAsyncClient.java
@@ -45,11 +45,8 @@ public final class ContentSafetyAsyncClient {
     /**
      * Analyze Text
      *
-     * A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories:
-     * Hate, SelfHarm, Sexual, and Violence.
-     * 

- * Request Body Schema - *

+ * A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence. + *

Request Body Schema

*
{@code
      * {
      *     text: String (Required)
@@ -63,9 +60,7 @@ public final class ContentSafetyAsyncClient {
      *     outputType: String(FourSeverityLevels/EightSeverityLevels) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistsMatch (Optional): [
@@ -101,11 +96,8 @@ public Mono> analyzeTextWithResponse(BinaryData options, Re
     /**
      * Analyze Image
      *
-     * A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories:
-     * Hate, SelfHarm, Sexual, and Violence.
-     * 

- * Request Body Schema - *

+ * A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence. + *

Request Body Schema

*
{@code
      * {
      *     image (Required): {
@@ -118,9 +110,7 @@ public Mono> analyzeTextWithResponse(BinaryData options, Re
      *     outputType: String(FourSeverityLevels) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     categoriesAnalysis (Required): [
@@ -171,8 +161,7 @@ public Mono analyzeText(String text) {
     /**
      * Analyze Text
      *
-     * A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories:
-     * Hate, SelfHarm, Sexual, and Violence.
+     * A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence.
      *
      * @param options The text analysis request.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
@@ -195,8 +184,7 @@ public Mono analyzeText(AnalyzeTextOptions options) {
     /**
      * Analyze Image
      *
-     * A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories:
-     * Hate, SelfHarm, Sexual, and Violence.
+     * A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence.
      *
      * @param options The image analysis request.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/ContentSafetyClient.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/ContentSafetyClient.java
index bfde1c9964b6..f0c829c23958 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/ContentSafetyClient.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/ContentSafetyClient.java
@@ -43,11 +43,8 @@ public final class ContentSafetyClient {
     /**
      * Analyze Text
      *
-     * A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories:
-     * Hate, SelfHarm, Sexual, and Violence.
-     * 

- * Request Body Schema - *

+ * A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence. + *

Request Body Schema

*
{@code
      * {
      *     text: String (Required)
@@ -61,9 +58,7 @@ public final class ContentSafetyClient {
      *     outputType: String(FourSeverityLevels/EightSeverityLevels) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistsMatch (Optional): [
@@ -99,11 +94,8 @@ public Response analyzeTextWithResponse(BinaryData options, RequestO
     /**
      * Analyze Image
      *
-     * A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories:
-     * Hate, SelfHarm, Sexual, and Violence.
-     * 

- * Request Body Schema - *

+ * A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence. + *

Request Body Schema

*
{@code
      * {
      *     image (Required): {
@@ -116,9 +108,7 @@ public Response analyzeTextWithResponse(BinaryData options, RequestO
      *     outputType: String(FourSeverityLevels) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     categoriesAnalysis (Required): [
@@ -147,8 +137,7 @@ public Response analyzeImageWithResponse(BinaryData options, Request
     /**
      * Analyze Text
      *
-     * A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories:
-     * Hate, SelfHarm, Sexual, and Violence.
+     * A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence.
      *
      * @param options The text analysis request.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
@@ -193,8 +182,7 @@ public AnalyzeTextResult analyzeText(String text) {
     /**
      * Analyze Image
      *
-     * A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories:
-     * Hate, SelfHarm, Sexual, and Violence.
+     * A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence.
      *
      * @param options The image analysis request.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/ContentSafetyClientBuilder.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/ContentSafetyClientBuilder.java
index 66d449e02fe8..9e66af5a2518 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/ContentSafetyClientBuilder.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/ContentSafetyClientBuilder.java
@@ -23,8 +23,8 @@
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
 import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.KeyCredentialPolicy;
@@ -302,7 +302,8 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
@@ -313,12 +314,15 @@ private HttpPipeline createHttpPipeline() {
         if (tokenCredential != null) {
             policies.add(new BearerTokenAuthenticationPolicy(tokenCredential, DEFAULT_SCOPES));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/implementation/BlocklistClientImpl.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/implementation/BlocklistClientImpl.java
index eedb893f17d2..12fa041cba15 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/implementation/BlocklistClientImpl.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/implementation/BlocklistClientImpl.java
@@ -156,8 +156,7 @@ public BlocklistClientImpl(HttpPipeline httpPipeline, SerializerAdapter serializ
     }
 
     /**
-     * The interface defining all the services for BlocklistClient to be used by the proxy service to perform REST
-     * calls.
+     * The interface defining all the services for BlocklistClient to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}/contentsafety")
     @ServiceInterface(name = "BlocklistClient")
@@ -376,11 +375,8 @@ Response listTextBlocklistsNextSync(@PathParam(value = "nextLink", e
     /**
      * Add or update BlocklistItems To Text Blocklist
      * 
-     * Add or update blocklistItems to a text blocklist. You can add or update at most 100 blocklistItems in one
-     * request.
-     * 

- * Request Body Schema - *

+ * Add or update blocklistItems to a text blocklist. You can add or update at most 100 blocklistItems in one request. + *

Request Body Schema

*
{@code
      * {
      *     blocklistItems (Required): [
@@ -392,9 +388,7 @@ Response listTextBlocklistsNextSync(@PathParam(value = "nextLink", e
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItems (Required): [
@@ -414,8 +408,7 @@ Response listTextBlocklistsNextSync(@PathParam(value = "nextLink", e
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the response of adding blocklistItems to the text blocklist along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return the response of adding blocklistItems to the text blocklist along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> addOrUpdateBlocklistItemsWithResponseAsync(String name, BinaryData options,
@@ -428,11 +421,8 @@ public Mono> addOrUpdateBlocklistItemsWithResponseAsync(Str
     /**
      * Add or update BlocklistItems To Text Blocklist
      * 
-     * Add or update blocklistItems to a text blocklist. You can add or update at most 100 blocklistItems in one
-     * request.
-     * 

- * Request Body Schema - *

+ * Add or update blocklistItems to a text blocklist. You can add or update at most 100 blocklistItems in one request. + *

Request Body Schema

*
{@code
      * {
      *     blocklistItems (Required): [
@@ -444,9 +434,7 @@ public Mono> addOrUpdateBlocklistItemsWithResponseAsync(Str
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItems (Required): [
@@ -480,18 +468,14 @@ public Response addOrUpdateBlocklistItemsWithResponse(String name, B
      * Create Or Update Text Blocklist
      * 
      * Updates a text blocklist. If the blocklistName does not exist, a new blocklist will be created.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
      *     description: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -521,18 +505,14 @@ public Mono> createOrUpdateTextBlocklistWithResponseAsync(S
      * Create Or Update Text Blocklist
      * 
      * Updates a text blocklist. If the blocklistName does not exist, a new blocklist will be created.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
      *     description: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -602,9 +582,7 @@ public Response deleteTextBlocklistWithResponse(String name, RequestOption
      * Get Text Blocklist By blocklistName
      * 
      * Returns text blocklist details.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -631,9 +609,7 @@ public Mono> getTextBlocklistWithResponseAsync(String name,
      * Get Text Blocklist By blocklistName
      * 
      * Returns text blocklist details.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -660,9 +636,7 @@ public Response getTextBlocklistWithResponse(String name, RequestOpt
      * Get BlocklistItem By blocklistName And blocklistItemId
      * 
      * Get blocklistItem by blocklistName and blocklistItemId from a text blocklist.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItemId: String (Required)
@@ -678,8 +652,7 @@ public Response getTextBlocklistWithResponse(String name, RequestOpt
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return blocklistItem by blocklistName and blocklistItemId from a text blocklist along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return blocklistItem by blocklistName and blocklistItemId from a text blocklist along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getTextBlocklistItemWithResponseAsync(String name, String blocklistItemId,
@@ -693,9 +666,7 @@ public Mono> getTextBlocklistItemWithResponseAsync(String n
      * Get BlocklistItem By blocklistName And blocklistItemId
      * 
      * Get blocklistItem by blocklistName and blocklistItemId from a text blocklist.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItemId: String (Required)
@@ -725,40 +696,16 @@ public Response getTextBlocklistItemWithResponse(String name, String
      * Get All BlocklistItems By blocklistName
      * 
      * Get all blocklistItems in a text blocklist.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe number of result items to return.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe number of result items to return.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItemId: String (Required)
@@ -773,8 +720,7 @@ public Response getTextBlocklistItemWithResponse(String name, String
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return all blocklistItems in a text blocklist along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return all blocklistItems in a text blocklist along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listTextBlocklistItemsSinglePageAsync(String name,
@@ -791,40 +737,16 @@ private Mono> listTextBlocklistItemsSinglePageAsync(St
      * Get All BlocklistItems By blocklistName
      * 
      * Get all blocklistItems in a text blocklist.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe number of result items to return.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe number of result items to return.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItemId: String (Required)
@@ -874,40 +796,16 @@ public PagedFlux listTextBlocklistItemsAsync(String name, RequestOpt
      * Get All BlocklistItems By blocklistName
      * 
      * Get all blocklistItems in a text blocklist.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe number of result items to return.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe number of result items to return.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItemId: String (Required)
@@ -937,40 +835,16 @@ private PagedResponse listTextBlocklistItemsSinglePage(String name,
      * Get All BlocklistItems By blocklistName
      * 
      * Get all blocklistItems in a text blocklist.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe number of result items to return.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe number of result items to return.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItemId: String (Required)
@@ -1020,9 +894,7 @@ public PagedIterable listTextBlocklistItems(String name, RequestOpti
      * Get All Text Blocklists
      * 
      * Get all text blocklists details.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -1051,9 +923,7 @@ private Mono> listTextBlocklistsSinglePageAsync(Reques
      * Get All Text Blocklists
      * 
      * Get all text blocklists details.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -1081,9 +951,7 @@ public PagedFlux listTextBlocklistsAsync(RequestOptions requestOptio
      * Get All Text Blocklists
      * 
      * Get all text blocklists details.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -1111,9 +979,7 @@ private PagedResponse listTextBlocklistsSinglePage(RequestOptions re
      * Get All Text Blocklists
      * 
      * Get all text blocklists details.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -1141,9 +1007,7 @@ public PagedIterable listTextBlocklists(RequestOptions requestOption
      * Remove BlocklistItems From Text Blocklist
      * 
      * Remove blocklistItems from a text blocklist. You can remove at most 100 BlocklistItems in one request.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     blocklistItemIds (Required): [
@@ -1173,9 +1037,7 @@ public Mono> removeBlocklistItemsWithResponseAsync(String name, B
      * Remove BlocklistItems From Text Blocklist
      * 
      * Remove blocklistItems from a text blocklist. You can remove at most 100 BlocklistItems in one request.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     blocklistItemIds (Required): [
@@ -1205,9 +1067,7 @@ public Response removeBlocklistItemsWithResponse(String name, BinaryData o
      * Get All BlocklistItems By blocklistName
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItemId: String (Required)
@@ -1224,8 +1084,7 @@ public Response removeBlocklistItemsWithResponse(String name, BinaryData o
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of TextBlocklistItem items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of TextBlocklistItem items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listTextBlocklistItemsNextSinglePageAsync(String nextLink,
@@ -1242,9 +1101,7 @@ private Mono> listTextBlocklistItemsNextSinglePageAsyn
      * Get All BlocklistItems By blocklistName
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistItemId: String (Required)
@@ -1277,9 +1134,7 @@ private PagedResponse listTextBlocklistItemsNextSinglePage(String ne
      * Get All Text Blocklists
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
@@ -1295,8 +1150,7 @@ private PagedResponse listTextBlocklistItemsNextSinglePage(String ne
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of TextBlocklist items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of TextBlocklist items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listTextBlocklistsNextSinglePageAsync(String nextLink,
@@ -1312,9 +1166,7 @@ private Mono> listTextBlocklistsNextSinglePageAsync(St
      * Get All Text Blocklists
      * 
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistName: String (Required)
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/implementation/ContentSafetyClientImpl.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/implementation/ContentSafetyClientImpl.java
index 74de26118073..e88fd07556b1 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/implementation/ContentSafetyClientImpl.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/implementation/ContentSafetyClientImpl.java
@@ -146,8 +146,7 @@ public ContentSafetyClientImpl(HttpPipeline httpPipeline, SerializerAdapter seri
     }
 
     /**
-     * The interface defining all the services for ContentSafetyClient to be used by the proxy service to perform REST
-     * calls.
+     * The interface defining all the services for ContentSafetyClient to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}/contentsafety")
     @ServiceInterface(name = "ContentSafetyClient")
@@ -196,11 +195,8 @@ Response analyzeImageSync(@HostParam("endpoint") String endpoint,
     /**
      * Analyze Text
      * 
-     * A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories:
-     * Hate, SelfHarm, Sexual, and Violence.
-     * 

- * Request Body Schema - *

+ * A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence. + *

Request Body Schema

*
{@code
      * {
      *     text: String (Required)
@@ -214,9 +210,7 @@ Response analyzeImageSync(@HostParam("endpoint") String endpoint,
      *     outputType: String(FourSeverityLevels/EightSeverityLevels) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistsMatch (Optional): [
@@ -253,11 +247,8 @@ public Mono> analyzeTextWithResponseAsync(BinaryData option
     /**
      * Analyze Text
      * 
-     * A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories:
-     * Hate, SelfHarm, Sexual, and Violence.
-     * 

- * Request Body Schema - *

+ * A synchronous API for the analysis of potentially harmful text content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence. + *

Request Body Schema

*
{@code
      * {
      *     text: String (Required)
@@ -271,9 +262,7 @@ public Mono> analyzeTextWithResponseAsync(BinaryData option
      *     outputType: String(FourSeverityLevels/EightSeverityLevels) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     blocklistsMatch (Optional): [
@@ -310,11 +299,8 @@ public Response analyzeTextWithResponse(BinaryData options, RequestO
     /**
      * Analyze Image
      * 
-     * A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories:
-     * Hate, SelfHarm, Sexual, and Violence.
-     * 

- * Request Body Schema - *

+ * A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence. + *

Request Body Schema

*
{@code
      * {
      *     image (Required): {
@@ -327,9 +313,7 @@ public Response analyzeTextWithResponse(BinaryData options, RequestO
      *     outputType: String(FourSeverityLevels) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     categoriesAnalysis (Required): [
@@ -359,11 +343,8 @@ public Mono> analyzeImageWithResponseAsync(BinaryData optio
     /**
      * Analyze Image
      * 
-     * A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories:
-     * Hate, SelfHarm, Sexual, and Violence.
-     * 

- * Request Body Schema - *

+ * A synchronous API for the analysis of potentially harmful image content. Currently, it supports four categories: Hate, SelfHarm, Sexual, and Violence. + *

Request Body Schema

*
{@code
      * {
      *     image (Required): {
@@ -376,9 +357,7 @@ public Mono> analyzeImageWithResponseAsync(BinaryData optio
      *     outputType: String(FourSeverityLevels) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     categoriesAnalysis (Required): [
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AddOrUpdateTextBlocklistItemsOptions.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AddOrUpdateTextBlocklistItemsOptions.java
index f2fe1ed9153e..9c236dff4bba 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AddOrUpdateTextBlocklistItemsOptions.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AddOrUpdateTextBlocklistItemsOptions.java
@@ -5,22 +5,25 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The request to add blocklistItems to a text blocklist.
  */
 @Immutable
-public final class AddOrUpdateTextBlocklistItemsOptions {
+public final class AddOrUpdateTextBlocklistItemsOptions
+    implements JsonSerializable {
 
     /*
      * Array of blocklistItems to add.
      */
     @Generated
-    @JsonProperty(value = "blocklistItems")
-    private List blocklistItems;
+    private final List blocklistItems;
 
     /**
      * Creates an instance of AddOrUpdateTextBlocklistItemsOptions class.
@@ -28,9 +31,7 @@ public final class AddOrUpdateTextBlocklistItemsOptions {
      * @param blocklistItems the blocklistItems value to set.
      */
     @Generated
-    @JsonCreator
-    public AddOrUpdateTextBlocklistItemsOptions(
-        @JsonProperty(value = "blocklistItems") List blocklistItems) {
+    public AddOrUpdateTextBlocklistItemsOptions(List blocklistItems) {
         this.blocklistItems = blocklistItems;
     }
 
@@ -43,4 +44,41 @@ public AddOrUpdateTextBlocklistItemsOptions(
     public List getBlocklistItems() {
         return this.blocklistItems;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("blocklistItems", this.blocklistItems,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AddOrUpdateTextBlocklistItemsOptions from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AddOrUpdateTextBlocklistItemsOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AddOrUpdateTextBlocklistItemsOptions.
+     */
+    @Generated
+    public static AddOrUpdateTextBlocklistItemsOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List blocklistItems = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("blocklistItems".equals(fieldName)) {
+                    blocklistItems = reader.readArray(reader1 -> TextBlocklistItem.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new AddOrUpdateTextBlocklistItemsOptions(blocklistItems);
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AddOrUpdateTextBlocklistItemsResult.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AddOrUpdateTextBlocklistItemsResult.java
index 15fd4cb3e3b2..b733fc63cd17 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AddOrUpdateTextBlocklistItemsResult.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AddOrUpdateTextBlocklistItemsResult.java
@@ -5,22 +5,25 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The response of adding blocklistItems to the text blocklist.
  */
 @Immutable
-public final class AddOrUpdateTextBlocklistItemsResult {
+public final class AddOrUpdateTextBlocklistItemsResult
+    implements JsonSerializable {
 
     /*
      * Array of blocklistItems have been added.
      */
     @Generated
-    @JsonProperty(value = "blocklistItems")
-    private List blocklistItems;
+    private final List blocklistItems;
 
     /**
      * Creates an instance of AddOrUpdateTextBlocklistItemsResult class.
@@ -28,9 +31,7 @@ public final class AddOrUpdateTextBlocklistItemsResult {
      * @param blocklistItems the blocklistItems value to set.
      */
     @Generated
-    @JsonCreator
-    private AddOrUpdateTextBlocklistItemsResult(
-        @JsonProperty(value = "blocklistItems") List blocklistItems) {
+    private AddOrUpdateTextBlocklistItemsResult(List blocklistItems) {
         this.blocklistItems = blocklistItems;
     }
 
@@ -43,4 +44,41 @@ private AddOrUpdateTextBlocklistItemsResult(
     public List getBlocklistItems() {
         return this.blocklistItems;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("blocklistItems", this.blocklistItems,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AddOrUpdateTextBlocklistItemsResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AddOrUpdateTextBlocklistItemsResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AddOrUpdateTextBlocklistItemsResult.
+     */
+    @Generated
+    public static AddOrUpdateTextBlocklistItemsResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List blocklistItems = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("blocklistItems".equals(fieldName)) {
+                    blocklistItems = reader.readArray(reader1 -> TextBlocklistItem.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new AddOrUpdateTextBlocklistItemsResult(blocklistItems);
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeImageOptions.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeImageOptions.java
index d599b95471f7..8559effab392 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeImageOptions.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeImageOptions.java
@@ -5,37 +5,35 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The image analysis request.
  */
 @Fluent
-public final class AnalyzeImageOptions {
+public final class AnalyzeImageOptions implements JsonSerializable {
 
     /*
      * The image needs to be analyzed.
      */
     @Generated
-    @JsonProperty(value = "image")
-    private ContentSafetyImageData image;
+    private final ContentSafetyImageData image;
 
     /*
-     * The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories
-     * will be returned.
+     * The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories will be returned.
      */
     @Generated
-    @JsonProperty(value = "categories")
     private List categories;
 
     /*
-     * This refers to the type of image analysis output. If no value is assigned, the default value will be
-     * "FourSeverityLevels".
+     * This refers to the type of image analysis output. If no value is assigned, the default value will be "FourSeverityLevels".
      */
     @Generated
-    @JsonProperty(value = "outputType")
     private AnalyzeImageOutputType outputType;
 
     /**
@@ -44,8 +42,7 @@ public final class AnalyzeImageOptions {
      * @param image the image value to set.
      */
     @Generated
-    @JsonCreator
-    public AnalyzeImageOptions(@JsonProperty(value = "image") ContentSafetyImageData image) {
+    public AnalyzeImageOptions(ContentSafetyImageData image) {
         this.image = image;
     }
 
@@ -60,8 +57,7 @@ public ContentSafetyImageData getImage() {
     }
 
     /**
-     * Get the categories property: The categories will be analyzed. If they are not assigned, a default set of
-     * analysis results for the categories will be returned.
+     * Get the categories property: The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories will be returned.
      *
      * @return the categories value.
      */
@@ -71,8 +67,7 @@ public List getCategories() {
     }
 
     /**
-     * Set the categories property: The categories will be analyzed. If they are not assigned, a default set of
-     * analysis results for the categories will be returned.
+     * Set the categories property: The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories will be returned.
      *
      * @param categories the categories value to set.
      * @return the AnalyzeImageOptions object itself.
@@ -84,8 +79,7 @@ public AnalyzeImageOptions setCategories(List categories) {
     }
 
     /**
-     * Get the outputType property: This refers to the type of image analysis output. If no value is assigned, the
-     * default value will be "FourSeverityLevels".
+     * Get the outputType property: This refers to the type of image analysis output. If no value is assigned, the default value will be "FourSeverityLevels".
      *
      * @return the outputType value.
      */
@@ -95,8 +89,7 @@ public AnalyzeImageOutputType getOutputType() {
     }
 
     /**
-     * Set the outputType property: This refers to the type of image analysis output. If no value is assigned, the
-     * default value will be "FourSeverityLevels".
+     * Set the outputType property: This refers to the type of image analysis output. If no value is assigned, the default value will be "FourSeverityLevels".
      *
      * @param outputType the outputType value to set.
      * @return the AnalyzeImageOptions object itself.
@@ -106,4 +99,52 @@ public AnalyzeImageOptions setOutputType(AnalyzeImageOutputType outputType) {
         this.outputType = outputType;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeJsonField("image", this.image);
+        jsonWriter.writeArrayField("categories", this.categories,
+            (writer, element) -> writer.writeString(element == null ? null : element.toString()));
+        jsonWriter.writeStringField("outputType", this.outputType == null ? null : this.outputType.toString());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AnalyzeImageOptions from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AnalyzeImageOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AnalyzeImageOptions.
+     */
+    @Generated
+    public static AnalyzeImageOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ContentSafetyImageData image = null;
+            List categories = null;
+            AnalyzeImageOutputType outputType = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("image".equals(fieldName)) {
+                    image = ContentSafetyImageData.fromJson(reader);
+                } else if ("categories".equals(fieldName)) {
+                    categories = reader.readArray(reader1 -> ImageCategory.fromString(reader1.getString()));
+                } else if ("outputType".equals(fieldName)) {
+                    outputType = AnalyzeImageOutputType.fromString(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            AnalyzeImageOptions deserializedAnalyzeImageOptions = new AnalyzeImageOptions(image);
+            deserializedAnalyzeImageOptions.categories = categories;
+            deserializedAnalyzeImageOptions.outputType = outputType;
+            return deserializedAnalyzeImageOptions;
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeImageOutputType.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeImageOutputType.java
index 26b19f3b75a4..8633e572854a 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeImageOutputType.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeImageOutputType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -36,7 +35,6 @@ public AnalyzeImageOutputType() {
      * @return the corresponding AnalyzeImageOutputType.
      */
     @Generated
-    @JsonCreator
     public static AnalyzeImageOutputType fromString(String name) {
         return fromString(name, AnalyzeImageOutputType.class);
     }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeImageResult.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeImageResult.java
index c81638c92d42..4f5f4ba101af 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeImageResult.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeImageResult.java
@@ -5,22 +5,24 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The image analysis response.
  */
 @Immutable
-public final class AnalyzeImageResult {
+public final class AnalyzeImageResult implements JsonSerializable {
 
     /*
      * Analysis result for categories.
      */
     @Generated
-    @JsonProperty(value = "categoriesAnalysis")
-    private List categoriesAnalysis;
+    private final List categoriesAnalysis;
 
     /**
      * Creates an instance of AnalyzeImageResult class.
@@ -28,9 +30,7 @@ public final class AnalyzeImageResult {
      * @param categoriesAnalysis the categoriesAnalysis value to set.
      */
     @Generated
-    @JsonCreator
-    private AnalyzeImageResult(
-        @JsonProperty(value = "categoriesAnalysis") List categoriesAnalysis) {
+    private AnalyzeImageResult(List categoriesAnalysis) {
         this.categoriesAnalysis = categoriesAnalysis;
     }
 
@@ -43,4 +43,41 @@ private AnalyzeImageResult(
     public List getCategoriesAnalysis() {
         return this.categoriesAnalysis;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("categoriesAnalysis", this.categoriesAnalysis,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AnalyzeImageResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AnalyzeImageResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AnalyzeImageResult.
+     */
+    @Generated
+    public static AnalyzeImageResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List categoriesAnalysis = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("categoriesAnalysis".equals(fieldName)) {
+                    categoriesAnalysis = reader.readArray(reader1 -> ImageCategoriesAnalysis.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new AnalyzeImageResult(categoriesAnalysis);
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeTextOptions.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeTextOptions.java
index 21ff6f5a2dd7..37a59807629e 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeTextOptions.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeTextOptions.java
@@ -5,53 +5,47 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The text analysis request.
  */
 @Fluent
-public final class AnalyzeTextOptions {
+public final class AnalyzeTextOptions implements JsonSerializable {
 
     /*
-     * The text needs to be analyzed. We support a maximum of 10k Unicode characters (Unicode code points) in the text
-     * of one request.
+     * The text needs to be analyzed. We support a maximum of 10k Unicode characters (Unicode code points) in the text of one request.
      */
     @Generated
-    @JsonProperty(value = "text")
-    private String text;
+    private final String text;
 
     /*
-     * The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories
-     * will be returned.
+     * The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories will be returned.
      */
     @Generated
-    @JsonProperty(value = "categories")
     private List categories;
 
     /*
      * The names of blocklists.
      */
     @Generated
-    @JsonProperty(value = "blocklistNames")
     private List blocklistNames;
 
     /*
-     * When set to true, further analyses of harmful content will not be performed in cases where blocklists are hit.
-     * When set to false, all analyses of harmful content will be performed, whether or not blocklists are hit.
+     * When set to true, further analyses of harmful content will not be performed in cases where blocklists are hit. When set to false, all analyses of harmful content will be performed, whether or not blocklists are hit.
      */
     @Generated
-    @JsonProperty(value = "haltOnBlocklistHit")
     private Boolean haltOnBlocklistHit;
 
     /*
-     * This refers to the type of text analysis output. If no value is assigned, the default value will be
-     * "FourSeverityLevels".
+     * This refers to the type of text analysis output. If no value is assigned, the default value will be "FourSeverityLevels".
      */
     @Generated
-    @JsonProperty(value = "outputType")
     private AnalyzeTextOutputType outputType;
 
     /**
@@ -60,14 +54,12 @@ public final class AnalyzeTextOptions {
      * @param text the text value to set.
      */
     @Generated
-    @JsonCreator
-    public AnalyzeTextOptions(@JsonProperty(value = "text") String text) {
+    public AnalyzeTextOptions(String text) {
         this.text = text;
     }
 
     /**
-     * Get the text property: The text needs to be analyzed. We support a maximum of 10k Unicode characters (Unicode
-     * code points) in the text of one request.
+     * Get the text property: The text needs to be analyzed. We support a maximum of 10k Unicode characters (Unicode code points) in the text of one request.
      *
      * @return the text value.
      */
@@ -77,8 +69,7 @@ public String getText() {
     }
 
     /**
-     * Get the categories property: The categories will be analyzed. If they are not assigned, a default set of
-     * analysis results for the categories will be returned.
+     * Get the categories property: The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories will be returned.
      *
      * @return the categories value.
      */
@@ -88,8 +79,7 @@ public List getCategories() {
     }
 
     /**
-     * Set the categories property: The categories will be analyzed. If they are not assigned, a default set of
-     * analysis results for the categories will be returned.
+     * Set the categories property: The categories will be analyzed. If they are not assigned, a default set of analysis results for the categories will be returned.
      *
      * @param categories the categories value to set.
      * @return the AnalyzeTextOptions object itself.
@@ -123,9 +113,7 @@ public AnalyzeTextOptions setBlocklistNames(List blocklistNames) {
     }
 
     /**
-     * Get the haltOnBlocklistHit property: When set to true, further analyses of harmful content will not be performed
-     * in cases where blocklists are hit. When set to false, all analyses of harmful content will be performed, whether
-     * or not blocklists are hit.
+     * Get the haltOnBlocklistHit property: When set to true, further analyses of harmful content will not be performed in cases where blocklists are hit. When set to false, all analyses of harmful content will be performed, whether or not blocklists are hit.
      *
      * @return the haltOnBlocklistHit value.
      */
@@ -135,9 +123,7 @@ public Boolean isHaltOnBlocklistHit() {
     }
 
     /**
-     * Set the haltOnBlocklistHit property: When set to true, further analyses of harmful content will not be performed
-     * in cases where blocklists are hit. When set to false, all analyses of harmful content will be performed, whether
-     * or not blocklists are hit.
+     * Set the haltOnBlocklistHit property: When set to true, further analyses of harmful content will not be performed in cases where blocklists are hit. When set to false, all analyses of harmful content will be performed, whether or not blocklists are hit.
      *
      * @param haltOnBlocklistHit the haltOnBlocklistHit value to set.
      * @return the AnalyzeTextOptions object itself.
@@ -149,8 +135,7 @@ public AnalyzeTextOptions setHaltOnBlocklistHit(Boolean haltOnBlocklistHit) {
     }
 
     /**
-     * Get the outputType property: This refers to the type of text analysis output. If no value is assigned, the
-     * default value will be "FourSeverityLevels".
+     * Get the outputType property: This refers to the type of text analysis output. If no value is assigned, the default value will be "FourSeverityLevels".
      *
      * @return the outputType value.
      */
@@ -160,8 +145,7 @@ public AnalyzeTextOutputType getOutputType() {
     }
 
     /**
-     * Set the outputType property: This refers to the type of text analysis output. If no value is assigned, the
-     * default value will be "FourSeverityLevels".
+     * Set the outputType property: This refers to the type of text analysis output. If no value is assigned, the default value will be "FourSeverityLevels".
      *
      * @param outputType the outputType value to set.
      * @return the AnalyzeTextOptions object itself.
@@ -171,4 +155,63 @@ public AnalyzeTextOptions setOutputType(AnalyzeTextOutputType outputType) {
         this.outputType = outputType;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("text", this.text);
+        jsonWriter.writeArrayField("categories", this.categories,
+            (writer, element) -> writer.writeString(element == null ? null : element.toString()));
+        jsonWriter.writeArrayField("blocklistNames", this.blocklistNames,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeBooleanField("haltOnBlocklistHit", this.haltOnBlocklistHit);
+        jsonWriter.writeStringField("outputType", this.outputType == null ? null : this.outputType.toString());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AnalyzeTextOptions from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AnalyzeTextOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AnalyzeTextOptions.
+     */
+    @Generated
+    public static AnalyzeTextOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String text = null;
+            List categories = null;
+            List blocklistNames = null;
+            Boolean haltOnBlocklistHit = null;
+            AnalyzeTextOutputType outputType = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("text".equals(fieldName)) {
+                    text = reader.getString();
+                } else if ("categories".equals(fieldName)) {
+                    categories = reader.readArray(reader1 -> TextCategory.fromString(reader1.getString()));
+                } else if ("blocklistNames".equals(fieldName)) {
+                    blocklistNames = reader.readArray(reader1 -> reader1.getString());
+                } else if ("haltOnBlocklistHit".equals(fieldName)) {
+                    haltOnBlocklistHit = reader.getNullable(JsonReader::getBoolean);
+                } else if ("outputType".equals(fieldName)) {
+                    outputType = AnalyzeTextOutputType.fromString(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            AnalyzeTextOptions deserializedAnalyzeTextOptions = new AnalyzeTextOptions(text);
+            deserializedAnalyzeTextOptions.categories = categories;
+            deserializedAnalyzeTextOptions.blocklistNames = blocklistNames;
+            deserializedAnalyzeTextOptions.haltOnBlocklistHit = haltOnBlocklistHit;
+            deserializedAnalyzeTextOptions.outputType = outputType;
+            return deserializedAnalyzeTextOptions;
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeTextOutputType.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeTextOutputType.java
index 25a21e33b6de..a091101e1cc1 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeTextOutputType.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeTextOutputType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public AnalyzeTextOutputType() {
      * @return the corresponding AnalyzeTextOutputType.
      */
     @Generated
-    @JsonCreator
     public static AnalyzeTextOutputType fromString(String name) {
         return fromString(name, AnalyzeTextOutputType.class);
     }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeTextResult.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeTextResult.java
index 21a0a6d33936..9cc018d0098f 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeTextResult.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/AnalyzeTextResult.java
@@ -5,29 +5,30 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The text analysis response.
  */
 @Immutable
-public final class AnalyzeTextResult {
+public final class AnalyzeTextResult implements JsonSerializable {
 
     /*
      * The blocklist match details.
      */
     @Generated
-    @JsonProperty(value = "blocklistsMatch")
     private List blocklistsMatch;
 
     /*
      * Analysis result for categories.
      */
     @Generated
-    @JsonProperty(value = "categoriesAnalysis")
-    private List categoriesAnalysis;
+    private final List categoriesAnalysis;
 
     /**
      * Creates an instance of AnalyzeTextResult class.
@@ -35,9 +36,7 @@ public final class AnalyzeTextResult {
      * @param categoriesAnalysis the categoriesAnalysis value to set.
      */
     @Generated
-    @JsonCreator
-    private AnalyzeTextResult(
-        @JsonProperty(value = "categoriesAnalysis") List categoriesAnalysis) {
+    private AnalyzeTextResult(List categoriesAnalysis) {
         this.categoriesAnalysis = categoriesAnalysis;
     }
 
@@ -60,4 +59,48 @@ public List getBlocklistsMatch() {
     public List getCategoriesAnalysis() {
         return this.categoriesAnalysis;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("categoriesAnalysis", this.categoriesAnalysis,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("blocklistsMatch", this.blocklistsMatch,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AnalyzeTextResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AnalyzeTextResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AnalyzeTextResult.
+     */
+    @Generated
+    public static AnalyzeTextResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List categoriesAnalysis = null;
+            List blocklistsMatch = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("categoriesAnalysis".equals(fieldName)) {
+                    categoriesAnalysis = reader.readArray(reader1 -> TextCategoriesAnalysis.fromJson(reader1));
+                } else if ("blocklistsMatch".equals(fieldName)) {
+                    blocklistsMatch = reader.readArray(reader1 -> TextBlocklistMatch.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            AnalyzeTextResult deserializedAnalyzeTextResult = new AnalyzeTextResult(categoriesAnalysis);
+            deserializedAnalyzeTextResult.blocklistsMatch = blocklistsMatch;
+            return deserializedAnalyzeTextResult;
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/ContentSafetyImageData.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/ContentSafetyImageData.java
index 9097a10a7d78..a6190bebd5d0 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/ContentSafetyImageData.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/ContentSafetyImageData.java
@@ -5,29 +5,29 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import com.azure.core.util.BinaryData;
-import com.fasterxml.jackson.annotation.JsonProperty;
 
 /**
- * The image can be either base64 encoded bytes or a blob URL. You can choose only one of these options. If both are
- * provided, the request will be refused. The maximum image size is 2048 x 2048 pixels and should not exceed 4 MB,
- * while the minimum image size is 50 x 50 pixels.
+ * The image can be either base64 encoded bytes or a blob URL. You can choose only one of these options. If both are provided, the request will be refused. The maximum image size is 2048 x 2048 pixels and should not exceed 4 MB, while the minimum image size is 50 x 50 pixels.
  */
 @Fluent
-public final class ContentSafetyImageData {
+public final class ContentSafetyImageData implements JsonSerializable {
 
     /*
      * The Base64 encoding of the image.
      */
     @Generated
-    @JsonProperty(value = "content")
     private byte[] content;
 
     /*
      * The blob url of the image.
      */
     @Generated
-    @JsonProperty(value = "blobUrl")
     private String blobUrl;
 
     /**
@@ -78,4 +78,42 @@ public ContentSafetyImageData setBlobUrl(String blobUrl) {
         this.blobUrl = blobUrl;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeBinaryField("content", this.content);
+        jsonWriter.writeStringField("blobUrl", this.blobUrl);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ContentSafetyImageData from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ContentSafetyImageData if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ContentSafetyImageData.
+     */
+    @Generated
+    public static ContentSafetyImageData fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ContentSafetyImageData deserializedContentSafetyImageData = new ContentSafetyImageData();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("content".equals(fieldName)) {
+                    deserializedContentSafetyImageData.content = reader.getBinary();
+                } else if ("blobUrl".equals(fieldName)) {
+                    deserializedContentSafetyImageData.blobUrl = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedContentSafetyImageData;
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/ImageCategoriesAnalysis.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/ImageCategoriesAnalysis.java
index 478642f2ee5a..0c77fe291a55 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/ImageCategoriesAnalysis.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/ImageCategoriesAnalysis.java
@@ -5,29 +5,28 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Image analysis result.
  */
 @Immutable
-public final class ImageCategoriesAnalysis {
+public final class ImageCategoriesAnalysis implements JsonSerializable {
 
     /*
      * The image analysis category.
      */
     @Generated
-    @JsonProperty(value = "category")
-    private ImageCategory category;
+    private final ImageCategory category;
 
     /*
-     * The value increases with the severity of the input content. The value of this field is determined by the output
-     * type specified in the request. The output type could be ‘FourSeverityLevels’, and the output value can be 0, 2,
-     * 4, 6.
+     * The value increases with the severity of the input content. The value of this field is determined by the output type specified in the request. The output type could be ‘FourSeverityLevels’, and the output value can be 0, 2, 4, 6.
      */
     @Generated
-    @JsonProperty(value = "severity")
     private Integer severity;
 
     /**
@@ -36,8 +35,7 @@ public final class ImageCategoriesAnalysis {
      * @param category the category value to set.
      */
     @Generated
-    @JsonCreator
-    private ImageCategoriesAnalysis(@JsonProperty(value = "category") ImageCategory category) {
+    private ImageCategoriesAnalysis(ImageCategory category) {
         this.category = category;
     }
 
@@ -52,9 +50,7 @@ public ImageCategory getCategory() {
     }
 
     /**
-     * Get the severity property: The value increases with the severity of the input content. The value of this field
-     * is determined by the output type specified in the request. The output type could be ‘FourSeverityLevels’, and
-     * the output value can be 0, 2, 4, 6.
+     * Get the severity property: The value increases with the severity of the input content. The value of this field is determined by the output type specified in the request. The output type could be ‘FourSeverityLevels’, and the output value can be 0, 2, 4, 6.
      *
      * @return the severity value.
      */
@@ -62,4 +58,46 @@ public ImageCategory getCategory() {
     public Integer getSeverity() {
         return this.severity;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("category", this.category == null ? null : this.category.toString());
+        jsonWriter.writeNumberField("severity", this.severity);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ImageCategoriesAnalysis from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ImageCategoriesAnalysis if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ImageCategoriesAnalysis.
+     */
+    @Generated
+    public static ImageCategoriesAnalysis fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ImageCategory category = null;
+            Integer severity = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("category".equals(fieldName)) {
+                    category = ImageCategory.fromString(reader.getString());
+                } else if ("severity".equals(fieldName)) {
+                    severity = reader.getNullable(JsonReader::getInt);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            ImageCategoriesAnalysis deserializedImageCategoriesAnalysis = new ImageCategoriesAnalysis(category);
+            deserializedImageCategoriesAnalysis.severity = severity;
+            return deserializedImageCategoriesAnalysis;
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/ImageCategory.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/ImageCategory.java
index 36ceb6947c51..67ee0baa0779 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/ImageCategory.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/ImageCategory.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -54,7 +53,6 @@ public ImageCategory() {
      * @return the corresponding ImageCategory.
      */
     @Generated
-    @JsonCreator
     public static ImageCategory fromString(String name) {
         return fromString(name, ImageCategory.class);
     }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/RemoveTextBlocklistItemsOptions.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/RemoveTextBlocklistItemsOptions.java
index f98bd7536e89..0b3ed26e5bd5 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/RemoveTextBlocklistItemsOptions.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/RemoveTextBlocklistItemsOptions.java
@@ -5,22 +5,24 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The request to remove blocklistItems from a text blocklist.
  */
 @Immutable
-public final class RemoveTextBlocklistItemsOptions {
+public final class RemoveTextBlocklistItemsOptions implements JsonSerializable {
 
     /*
      * Array of blocklistItemIds to remove.
      */
     @Generated
-    @JsonProperty(value = "blocklistItemIds")
-    private List blocklistItemIds;
+    private final List blocklistItemIds;
 
     /**
      * Creates an instance of RemoveTextBlocklistItemsOptions class.
@@ -28,8 +30,7 @@ public final class RemoveTextBlocklistItemsOptions {
      * @param blocklistItemIds the blocklistItemIds value to set.
      */
     @Generated
-    @JsonCreator
-    public RemoveTextBlocklistItemsOptions(@JsonProperty(value = "blocklistItemIds") List blocklistItemIds) {
+    public RemoveTextBlocklistItemsOptions(List blocklistItemIds) {
         this.blocklistItemIds = blocklistItemIds;
     }
 
@@ -42,4 +43,41 @@ public RemoveTextBlocklistItemsOptions(@JsonProperty(value = "blocklistItemIds")
     public List getBlocklistItemIds() {
         return this.blocklistItemIds;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("blocklistItemIds", this.blocklistItemIds,
+            (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RemoveTextBlocklistItemsOptions from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RemoveTextBlocklistItemsOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RemoveTextBlocklistItemsOptions.
+     */
+    @Generated
+    public static RemoveTextBlocklistItemsOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List blocklistItemIds = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("blocklistItemIds".equals(fieldName)) {
+                    blocklistItemIds = reader.readArray(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new RemoveTextBlocklistItemsOptions(blocklistItemIds);
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextBlocklist.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextBlocklist.java
index 841d73776133..a93abb08d4cd 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextBlocklist.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextBlocklist.java
@@ -3,28 +3,33 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.ai.contentsafety.models;
 
+import com.azure.ai.contentsafety.implementation.JsonMergePatchHelper;
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * Text Blocklist.
  */
 @Fluent
-public final class TextBlocklist {
+public final class TextBlocklist implements JsonSerializable {
 
     /*
      * Text blocklist name.
      */
     @Generated
-    @JsonProperty(value = "blocklistName", access = JsonProperty.Access.WRITE_ONLY)
     private String name;
 
     /*
      * Text blocklist description.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /**
@@ -63,6 +68,87 @@ public String getDescription() {
     @Generated
     public TextBlocklist setDescription(String description) {
         this.description = description;
+        this.updatedProperties.add("description");
         return this;
     }
+
+    @Generated
+    private boolean jsonMergePatch;
+
+    /**
+     * Stores updated model property, the value is property name, not serialized name.
+     */
+    @Generated
+    private final Set updatedProperties = new HashSet<>();
+
+    @Generated
+    void serializeAsJsonMergePatch(boolean jsonMergePatch) {
+        this.jsonMergePatch = jsonMergePatch;
+    }
+
+    static {
+        JsonMergePatchHelper.setTextBlocklistAccessor((model, jsonMergePatchEnabled) -> {
+            model.serializeAsJsonMergePatch(jsonMergePatchEnabled);
+            return model;
+        });
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        if (jsonMergePatch) {
+            return toJsonMergePatch(jsonWriter);
+        } else {
+            jsonWriter.writeStartObject();
+            jsonWriter.writeStringField("description", this.description);
+            return jsonWriter.writeEndObject();
+        }
+    }
+
+    @Generated
+    private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        if (updatedProperties.contains("description")) {
+            if (this.description == null) {
+                jsonWriter.writeNullField("description");
+            } else {
+                jsonWriter.writeStringField("description", this.description);
+            }
+        }
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of TextBlocklist from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of TextBlocklist if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the TextBlocklist.
+     */
+    @Generated
+    public static TextBlocklist fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String name = null;
+            String description = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("blocklistName".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            TextBlocklist deserializedTextBlocklist = new TextBlocklist();
+            deserializedTextBlocklist.name = name;
+            deserializedTextBlocklist.description = description;
+            return deserializedTextBlocklist;
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextBlocklistItem.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextBlocklistItem.java
index b14a3c043d88..8bbb89b4b3b6 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextBlocklistItem.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextBlocklistItem.java
@@ -5,35 +5,35 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Item in a TextBlocklist.
  */
 @Fluent
-public final class TextBlocklistItem {
+public final class TextBlocklistItem implements JsonSerializable {
 
     /*
      * The service will generate a BlocklistItemId, which will be a UUID.
      */
     @Generated
-    @JsonProperty(value = "blocklistItemId", access = JsonProperty.Access.WRITE_ONLY)
     private String blocklistItemId;
 
     /*
      * BlocklistItem description.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * BlocklistItem content.
      */
     @Generated
-    @JsonProperty(value = "text")
-    private String text;
+    private final String text;
 
     /**
      * Creates an instance of TextBlocklistItem class.
@@ -41,8 +41,7 @@ public final class TextBlocklistItem {
      * @param text the text value to set.
      */
     @Generated
-    @JsonCreator
-    public TextBlocklistItem(@JsonProperty(value = "text") String text) {
+    public TextBlocklistItem(String text) {
         this.text = text;
     }
 
@@ -87,4 +86,50 @@ public TextBlocklistItem setDescription(String description) {
     public String getText() {
         return this.text;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("text", this.text);
+        jsonWriter.writeStringField("description", this.description);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of TextBlocklistItem from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of TextBlocklistItem if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the TextBlocklistItem.
+     */
+    @Generated
+    public static TextBlocklistItem fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String blocklistItemId = null;
+            String text = null;
+            String description = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("blocklistItemId".equals(fieldName)) {
+                    blocklistItemId = reader.getString();
+                } else if ("text".equals(fieldName)) {
+                    text = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            TextBlocklistItem deserializedTextBlocklistItem = new TextBlocklistItem(text);
+            deserializedTextBlocklistItem.blocklistItemId = blocklistItemId;
+            deserializedTextBlocklistItem.description = description;
+            return deserializedTextBlocklistItem;
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextBlocklistMatch.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextBlocklistMatch.java
index e12e49b2c84f..d4de45760d12 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextBlocklistMatch.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextBlocklistMatch.java
@@ -5,35 +5,35 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The result of blocklist match.
  */
 @Immutable
-public final class TextBlocklistMatch {
+public final class TextBlocklistMatch implements JsonSerializable {
 
     /*
      * The name of the matched blocklist.
      */
     @Generated
-    @JsonProperty(value = "blocklistName")
-    private String blocklistName;
+    private final String blocklistName;
 
     /*
      * The ID of the matched item.
      */
     @Generated
-    @JsonProperty(value = "blocklistItemId")
-    private String blocklistItemId;
+    private final String blocklistItemId;
 
     /*
      * The content of the matched item.
      */
     @Generated
-    @JsonProperty(value = "blocklistItemText")
-    private String blocklistItemText;
+    private final String blocklistItemText;
 
     /**
      * Creates an instance of TextBlocklistMatch class.
@@ -43,10 +43,7 @@ public final class TextBlocklistMatch {
      * @param blocklistItemText the blocklistItemText value to set.
      */
     @Generated
-    @JsonCreator
-    private TextBlocklistMatch(@JsonProperty(value = "blocklistName") String blocklistName,
-        @JsonProperty(value = "blocklistItemId") String blocklistItemId,
-        @JsonProperty(value = "blocklistItemText") String blocklistItemText) {
+    private TextBlocklistMatch(String blocklistName, String blocklistItemId, String blocklistItemText) {
         this.blocklistName = blocklistName;
         this.blocklistItemId = blocklistItemId;
         this.blocklistItemText = blocklistItemText;
@@ -81,4 +78,48 @@ public String getBlocklistItemId() {
     public String getBlocklistItemText() {
         return this.blocklistItemText;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("blocklistName", this.blocklistName);
+        jsonWriter.writeStringField("blocklistItemId", this.blocklistItemId);
+        jsonWriter.writeStringField("blocklistItemText", this.blocklistItemText);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of TextBlocklistMatch from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of TextBlocklistMatch if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the TextBlocklistMatch.
+     */
+    @Generated
+    public static TextBlocklistMatch fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String blocklistName = null;
+            String blocklistItemId = null;
+            String blocklistItemText = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("blocklistName".equals(fieldName)) {
+                    blocklistName = reader.getString();
+                } else if ("blocklistItemId".equals(fieldName)) {
+                    blocklistItemId = reader.getString();
+                } else if ("blocklistItemText".equals(fieldName)) {
+                    blocklistItemText = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new TextBlocklistMatch(blocklistName, blocklistItemId, blocklistItemText);
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextCategoriesAnalysis.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextCategoriesAnalysis.java
index 623f87ad2535..820126049229 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextCategoriesAnalysis.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextCategoriesAnalysis.java
@@ -5,29 +5,28 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Text analysis result.
  */
 @Immutable
-public final class TextCategoriesAnalysis {
+public final class TextCategoriesAnalysis implements JsonSerializable {
 
     /*
      * The text analysis category.
      */
     @Generated
-    @JsonProperty(value = "category")
-    private TextCategory category;
+    private final TextCategory category;
 
     /*
-     * The value increases with the severity of the input content. The value of this field is determined by the output
-     * type specified in the request. The output type could be ‘FourSeverityLevels’ or ‘EightSeverity Levels’, and the
-     * output value can be 0, 2, 4, 6 or 0, 1, 2, 3, 4, 5, 6, or 7.
+     * The value increases with the severity of the input content. The value of this field is determined by the output type specified in the request. The output type could be ‘FourSeverityLevels’ or ‘EightSeverity Levels’, and the output value can be 0, 2, 4, 6 or 0, 1, 2, 3, 4, 5, 6, or 7.
      */
     @Generated
-    @JsonProperty(value = "severity")
     private Integer severity;
 
     /**
@@ -36,8 +35,7 @@ public final class TextCategoriesAnalysis {
      * @param category the category value to set.
      */
     @Generated
-    @JsonCreator
-    private TextCategoriesAnalysis(@JsonProperty(value = "category") TextCategory category) {
+    private TextCategoriesAnalysis(TextCategory category) {
         this.category = category;
     }
 
@@ -52,9 +50,7 @@ public TextCategory getCategory() {
     }
 
     /**
-     * Get the severity property: The value increases with the severity of the input content. The value of this field
-     * is determined by the output type specified in the request. The output type could be ‘FourSeverityLevels’ or
-     * ‘EightSeverity Levels’, and the output value can be 0, 2, 4, 6 or 0, 1, 2, 3, 4, 5, 6, or 7.
+     * Get the severity property: The value increases with the severity of the input content. The value of this field is determined by the output type specified in the request. The output type could be ‘FourSeverityLevels’ or ‘EightSeverity Levels’, and the output value can be 0, 2, 4, 6 or 0, 1, 2, 3, 4, 5, 6, or 7.
      *
      * @return the severity value.
      */
@@ -62,4 +58,46 @@ public TextCategory getCategory() {
     public Integer getSeverity() {
         return this.severity;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("category", this.category == null ? null : this.category.toString());
+        jsonWriter.writeNumberField("severity", this.severity);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of TextCategoriesAnalysis from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of TextCategoriesAnalysis if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the TextCategoriesAnalysis.
+     */
+    @Generated
+    public static TextCategoriesAnalysis fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            TextCategory category = null;
+            Integer severity = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("category".equals(fieldName)) {
+                    category = TextCategory.fromString(reader.getString());
+                } else if ("severity".equals(fieldName)) {
+                    severity = reader.getNullable(JsonReader::getInt);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            TextCategoriesAnalysis deserializedTextCategoriesAnalysis = new TextCategoriesAnalysis(category);
+            deserializedTextCategoriesAnalysis.severity = severity;
+            return deserializedTextCategoriesAnalysis;
+        });
+    }
 }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextCategory.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextCategory.java
index fb5942c6f1dc..fefbff9e5cb6 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextCategory.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/com/azure/ai/contentsafety/models/TextCategory.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -54,7 +53,6 @@ public TextCategory() {
      * @return the corresponding TextCategory.
      */
     @Generated
-    @JsonCreator
     public static TextCategory fromString(String name) {
         return fromString(name, TextCategory.class);
     }
diff --git a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/module-info.java b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/module-info.java
index 7581ba2c91b9..8dac7644d1b7 100644
--- a/sdk/contentsafety/azure-ai-contentsafety/src/main/java/module-info.java
+++ b/sdk/contentsafety/azure-ai-contentsafety/src/main/java/module-info.java
@@ -4,7 +4,8 @@
 
 module com.azure.ai.contentsafety {
     requires transitive com.azure.core;
+    requires transitive com.azure.json;
     exports com.azure.ai.contentsafety;
     exports com.azure.ai.contentsafety.models;
-    opens com.azure.ai.contentsafety.models to com.azure.core, com.fasterxml.jackson.databind;
+    opens com.azure.ai.contentsafety.models to com.azure.core;
 }
diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DeploymentEnvironmentsAsyncClient.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DeploymentEnvironmentsAsyncClient.java
index cab2a89dc02f..adbeb7a2fa84 100644
--- a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DeploymentEnvironmentsAsyncClient.java
+++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DeploymentEnvironmentsAsyncClient.java
@@ -40,28 +40,14 @@ public final class DeploymentEnvironmentsAsyncClient {
 
     /**
      * Lists the environments for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -103,28 +89,14 @@ public PagedFlux listAllEnvironments(String projectName, RequestOpti
 
     /**
      * Lists the environments for a project and user.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -151,8 +123,7 @@ public PagedFlux listAllEnvironments(String projectName, RequestOpti
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -168,9 +139,7 @@ public PagedFlux listEnvironments(String projectName, String userId, /** * Gets an environment. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -197,8 +166,7 @@ public PagedFlux listEnvironments(String projectName, String userId,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -216,9 +184,7 @@ public Mono> getEnvironmentWithResponse(String projectName, /** * Creates or updates an environment. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -243,9 +209,7 @@ public Mono> getEnvironmentWithResponse(String projectName,
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -272,8 +236,7 @@ public Mono> getEnvironmentWithResponse(String projectName,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param body Represents an environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -293,9 +256,7 @@ public PollerFlux beginCreateOrUpdateEnvironment(String /** * Deletes an environment and all its associated resources. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -314,8 +275,7 @@ public PollerFlux beginCreateOrUpdateEnvironment(String
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -333,28 +293,14 @@ public PollerFlux beginDeleteEnvironment(String projectName, S /** * Lists all of the catalogs available for a project. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -377,9 +323,7 @@ public PagedFlux listCatalogs(String projectName, RequestOptions req
 
     /**
      * Gets the specified catalog within the project.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -393,8 +337,7 @@ public PagedFlux listCatalogs(String projectName, RequestOptions req
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the specified catalog within the project along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the specified catalog within the project along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -405,28 +348,14 @@ public Mono> getCatalogWithResponse(String projectName, Str
 
     /**
      * Lists all environment definitions available for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -468,28 +397,14 @@ public PagedFlux listEnvironmentDefinitions(String projectName, Requ
 
     /**
      * Lists all environment definitions available within a catalog.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -533,9 +448,7 @@ public PagedFlux listEnvironmentDefinitionsByCatalog(String projectN
 
     /**
      * Get an environment definition from a catalog.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -569,8 +482,7 @@ public PagedFlux listEnvironmentDefinitionsByCatalog(String projectN
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return an environment definition from a catalog along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return an environment definition from a catalog along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -582,28 +494,14 @@ public Mono> getEnvironmentDefinitionWithResponse(String pr
 
     /**
      * Lists all environment types configured for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DeploymentEnvironmentsClient.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DeploymentEnvironmentsClient.java
index 6146c4ec86e8..39102d37509d 100644
--- a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DeploymentEnvironmentsClient.java
+++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DeploymentEnvironmentsClient.java
@@ -39,28 +39,14 @@ public final class DeploymentEnvironmentsClient {
 
     /**
      * Lists the environments for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -102,28 +88,14 @@ public PagedIterable listAllEnvironments(String projectName, Request
 
     /**
      * Lists the environments for a project and user.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -150,8 +122,7 @@ public PagedIterable listAllEnvironments(String projectName, Request
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -168,9 +139,7 @@ public PagedIterable listEnvironments(String projectName, String use /** * Gets an environment. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -197,8 +166,7 @@ public PagedIterable listEnvironments(String projectName, String use
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -216,9 +184,7 @@ public Response getEnvironmentWithResponse(String projectName, Strin /** * Creates or updates an environment. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -243,9 +209,7 @@ public Response getEnvironmentWithResponse(String projectName, Strin
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -272,8 +236,7 @@ public Response getEnvironmentWithResponse(String projectName, Strin
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param body Represents an environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -293,9 +256,7 @@ public SyncPoller beginCreateOrUpdateEnvironment(String /** * Deletes an environment and all its associated resources. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -314,8 +275,7 @@ public SyncPoller beginCreateOrUpdateEnvironment(String
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -333,28 +293,14 @@ public SyncPoller beginDeleteEnvironment(String projectName, S /** * Lists all of the catalogs available for a project. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -377,9 +323,7 @@ public PagedIterable listCatalogs(String projectName, RequestOptions
 
     /**
      * Gets the specified catalog within the project.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -404,28 +348,14 @@ public Response getCatalogWithResponse(String projectName, String ca
 
     /**
      * Lists all environment definitions available for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -467,28 +397,14 @@ public PagedIterable listEnvironmentDefinitions(String projectName,
 
     /**
      * Lists all environment definitions available within a catalog.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -532,9 +448,7 @@ public PagedIterable listEnvironmentDefinitionsByCatalog(String proj
 
     /**
      * Get an environment definition from a catalog.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -580,28 +494,14 @@ public Response getEnvironmentDefinitionWithResponse(String projectN
 
     /**
      * Lists all environment types configured for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DeploymentEnvironmentsClientBuilder.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DeploymentEnvironmentsClientBuilder.java
index 9cdd4a0e21c5..d0f2423c01d9 100644
--- a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DeploymentEnvironmentsClientBuilder.java
+++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DeploymentEnvironmentsClientBuilder.java
@@ -21,8 +21,8 @@
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
 import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.RequestIdPolicy;
@@ -284,7 +284,8 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
@@ -292,12 +293,15 @@ private HttpPipeline createHttpPipeline() {
         if (tokenCredential != null) {
             policies.add(new BearerTokenAuthenticationPolicy(tokenCredential, DEFAULT_SCOPES));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevBoxesAsyncClient.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevBoxesAsyncClient.java
index ea05ea7369bc..ddec8c8fe54e 100644
--- a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevBoxesAsyncClient.java
+++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevBoxesAsyncClient.java
@@ -41,34 +41,15 @@ public final class DevBoxesAsyncClient {
 
     /**
      * Lists available pools.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -117,9 +98,7 @@ public PagedFlux listPools(String projectName, RequestOptions reques
 
     /**
      * Gets a pool.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -170,34 +149,15 @@ public Mono> getPoolWithResponse(String projectName, String
 
     /**
      * Lists available schedules for a pool.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -225,9 +185,7 @@ public PagedFlux listSchedules(String projectName, String poolName,
 
     /**
      * Gets a schedule.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -257,34 +215,15 @@ public Mono> getScheduleWithResponse(String projectName, St
 
     /**
      * Lists Dev Boxes that the caller has access to in the DevCenter.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -347,34 +286,15 @@ public PagedFlux listAllDevBoxes(RequestOptions requestOptions) {
 
     /**
      * Lists Dev Boxes in the Dev Center for a particular user.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -422,8 +342,7 @@ public PagedFlux listAllDevBoxes(RequestOptions requestOptions) {
      * }
      * }
* - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -439,34 +358,15 @@ public PagedFlux listAllDevBoxesByUser(String userId, RequestOptions /** * Lists Dev Boxes in the project for a particular user. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -515,8 +415,7 @@ public PagedFlux listAllDevBoxesByUser(String userId, RequestOptions
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -532,9 +431,7 @@ public PagedFlux listDevBoxes(String projectName, String userId, Req /** * Gets a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -583,8 +480,7 @@ public PagedFlux listDevBoxes(String projectName, String userId, Req
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -602,9 +498,7 @@ public Mono> getDevBoxWithResponse(String projectName, Stri /** * Creates or replaces a Dev Box. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -651,9 +545,7 @@ public Mono> getDevBoxWithResponse(String projectName, Stri
      *     localAdministrator: String(Enabled/Disabled) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -702,8 +594,7 @@ public Mono> getDevBoxWithResponse(String projectName, Stri
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param body Represents a environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -722,9 +613,7 @@ public PollerFlux beginCreateDevBox(String projectName, /** * Deletes a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -743,8 +632,7 @@ public PollerFlux beginCreateDevBox(String projectName,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -762,9 +650,7 @@ public PollerFlux beginDeleteDevBox(String projectName, String /** * Starts a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -783,8 +669,7 @@ public PollerFlux beginDeleteDevBox(String projectName, String
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -802,28 +687,14 @@ public PollerFlux beginStartDevBox(String projectName, S /** * Stops a Dev Box. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
hibernateBooleanNoOptional parameter to hibernate the dev box.
Query Parameters
NameTypeRequiredDescription
hibernateBooleanNoOptional parameter to hibernate the dev box.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -842,8 +713,7 @@ public PollerFlux beginStartDevBox(String projectName, S
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -861,9 +731,7 @@ public PollerFlux beginStopDevBox(String projectName, St /** * Restarts a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -882,8 +750,7 @@ public PollerFlux beginStopDevBox(String projectName, St
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -901,9 +768,7 @@ public PollerFlux beginRestartDevBox(String projectName, /** * Gets RDP Connection info. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     webUrl: String (Optional)
@@ -912,8 +777,7 @@ public PollerFlux beginRestartDevBox(String projectName,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -931,9 +795,7 @@ public Mono> getRemoteConnectionWithResponse(String project /** * Lists actions on a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -947,8 +809,7 @@ public Mono> getRemoteConnectionWithResponse(String project
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -966,9 +827,7 @@ public PagedFlux listDevBoxActions(String projectName, String userId /** * Gets an action. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -982,8 +841,7 @@ public PagedFlux listDevBoxActions(String projectName, String userId
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param actionName The name of an action that will take place on a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -1005,8 +863,7 @@ public Mono> getDevBoxActionWithResponse(String projectName * Skips an occurrence of an action. * * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param actionName The name of an action that will take place on a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -1026,9 +883,7 @@ public Mono> skipActionWithResponse(String projectName, String us /** * Delays the occurrence of an action. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1042,8 +897,7 @@ public Mono> skipActionWithResponse(String projectName, String us
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param actionName The name of an action that will take place on a Dev Box. * @param delayUntil The time to delay the Dev Box action or actions until. @@ -1052,8 +906,7 @@ public Mono> skipActionWithResponse(String projectName, String us * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an action which will take place on a Dev Box along with {@link Response} on successful completion of - * {@link Mono}. + * @return an action which will take place on a Dev Box along with {@link Response} on successful completion of {@link Mono}. */ @Generated @ServiceMethod(returns = ReturnType.SINGLE) @@ -1065,9 +918,7 @@ public Mono> delayActionWithResponse(String projectName, St /** * Delays all actions. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1097,8 +948,7 @@ public Mono> delayActionWithResponse(String projectName, St
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param delayUntil The time to delay the Dev Box action or actions until. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevBoxesClient.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevBoxesClient.java index d5be92ade140..63221ed04e61 100644 --- a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevBoxesClient.java +++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevBoxesClient.java @@ -40,34 +40,15 @@ public final class DevBoxesClient { /** * Lists available pools. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -116,9 +97,7 @@ public PagedIterable listPools(String projectName, RequestOptions re
 
     /**
      * Gets a pool.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -169,34 +148,15 @@ public Response getPoolWithResponse(String projectName, String poolN
 
     /**
      * Lists available schedules for a pool.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -224,9 +184,7 @@ public PagedIterable listSchedules(String projectName, String poolNa
 
     /**
      * Gets a schedule.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -256,34 +214,15 @@ public Response getScheduleWithResponse(String projectName, String p
 
     /**
      * Lists Dev Boxes that the caller has access to in the DevCenter.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -346,34 +285,15 @@ public PagedIterable listAllDevBoxes(RequestOptions requestOptions)
 
     /**
      * Lists Dev Boxes in the Dev Center for a particular user.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -421,8 +341,7 @@ public PagedIterable listAllDevBoxes(RequestOptions requestOptions)
      * }
      * }
* - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -438,34 +357,15 @@ public PagedIterable listAllDevBoxesByUser(String userId, RequestOpt /** * Lists Dev Boxes in the project for a particular user. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -514,8 +414,7 @@ public PagedIterable listAllDevBoxesByUser(String userId, RequestOpt
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -531,9 +430,7 @@ public PagedIterable listDevBoxes(String projectName, String userId, /** * Gets a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -582,8 +479,7 @@ public PagedIterable listDevBoxes(String projectName, String userId,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -601,9 +497,7 @@ public Response getDevBoxWithResponse(String projectName, String use /** * Creates or replaces a Dev Box. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -650,9 +544,7 @@ public Response getDevBoxWithResponse(String projectName, String use
      *     localAdministrator: String(Enabled/Disabled) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -701,8 +593,7 @@ public Response getDevBoxWithResponse(String projectName, String use
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param body Represents a environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -721,9 +612,7 @@ public SyncPoller beginCreateDevBox(String projectName, /** * Deletes a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -742,8 +631,7 @@ public SyncPoller beginCreateDevBox(String projectName,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -761,9 +649,7 @@ public SyncPoller beginDeleteDevBox(String projectName, String /** * Starts a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -782,8 +668,7 @@ public SyncPoller beginDeleteDevBox(String projectName, String
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -801,28 +686,14 @@ public SyncPoller beginStartDevBox(String projectName, S /** * Stops a Dev Box. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
hibernateBooleanNoOptional parameter to hibernate the dev box.
Query Parameters
NameTypeRequiredDescription
hibernateBooleanNoOptional parameter to hibernate the dev box.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -841,8 +712,7 @@ public SyncPoller beginStartDevBox(String projectName, S
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -860,9 +730,7 @@ public SyncPoller beginStopDevBox(String projectName, St /** * Restarts a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -881,8 +749,7 @@ public SyncPoller beginStopDevBox(String projectName, St
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -900,9 +767,7 @@ public SyncPoller beginRestartDevBox(String projectName, /** * Gets RDP Connection info. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     webUrl: String (Optional)
@@ -911,8 +776,7 @@ public SyncPoller beginRestartDevBox(String projectName,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -930,9 +794,7 @@ public Response getRemoteConnectionWithResponse(String projectName, /** * Lists actions on a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -946,8 +808,7 @@ public Response getRemoteConnectionWithResponse(String projectName,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -965,9 +826,7 @@ public PagedIterable listDevBoxActions(String projectName, String us /** * Gets an action. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -981,8 +840,7 @@ public PagedIterable listDevBoxActions(String projectName, String us
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param actionName The name of an action that will take place on a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -1004,8 +862,7 @@ public Response getDevBoxActionWithResponse(String projectName, Stri * Skips an occurrence of an action. * * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param actionName The name of an action that will take place on a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -1024,9 +881,7 @@ public Response skipActionWithResponse(String projectName, String userId, /** * Delays the occurrence of an action. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1040,8 +895,7 @@ public Response skipActionWithResponse(String projectName, String userId,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param actionName The name of an action that will take place on a Dev Box. * @param delayUntil The time to delay the Dev Box action or actions until. @@ -1062,9 +916,7 @@ public Response delayActionWithResponse(String projectName, String u /** * Delays all actions. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1094,8 +946,7 @@ public Response delayActionWithResponse(String projectName, String u
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param delayUntil The time to delay the Dev Box action or actions until. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevBoxesClientBuilder.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevBoxesClientBuilder.java index 74096ac3af6d..ee4c37381983 100644 --- a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevBoxesClientBuilder.java +++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevBoxesClientBuilder.java @@ -21,8 +21,8 @@ import com.azure.core.http.policy.AddHeadersFromContextPolicy; import com.azure.core.http.policy.AddHeadersPolicy; import com.azure.core.http.policy.BearerTokenAuthenticationPolicy; -import com.azure.core.http.policy.HttpLogOptions; import com.azure.core.http.policy.HttpLoggingPolicy; +import com.azure.core.http.policy.HttpLogOptions; import com.azure.core.http.policy.HttpPipelinePolicy; import com.azure.core.http.policy.HttpPolicyProviders; import com.azure.core.http.policy.RequestIdPolicy; @@ -284,7 +284,8 @@ private HttpPipeline createHttpPipeline() { if (headers.getSize() > 0) { policies.add(new AddHeadersPolicy(headers)); } - this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL) + this.pipelinePolicies.stream() + .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL) .forEach(p -> policies.add(p)); HttpPolicyProviders.addBeforeRetryPolicies(policies); policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy())); @@ -292,12 +293,15 @@ private HttpPipeline createHttpPipeline() { if (tokenCredential != null) { policies.add(new BearerTokenAuthenticationPolicy(tokenCredential, DEFAULT_SCOPES)); } - this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY) + this.pipelinePolicies.stream() + .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY) .forEach(p -> policies.add(p)); HttpPolicyProviders.addAfterRetryPolicies(policies); policies.add(new HttpLoggingPolicy(localHttpLogOptions)); HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0])) - .httpClient(httpClient).clientOptions(localClientOptions).build(); + .httpClient(httpClient) + .clientOptions(localClientOptions) + .build(); return httpPipeline; } diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevCenterAsyncClient.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevCenterAsyncClient.java index fbc50555d967..7098bcda4088 100644 --- a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevCenterAsyncClient.java +++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevCenterAsyncClient.java @@ -39,34 +39,15 @@ public final class DevCenterAsyncClient { /** * Lists all projects. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -90,9 +71,7 @@ public PagedFlux listProjects(RequestOptions requestOptions) {
 
     /**
      * Gets a project.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevCenterClient.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevCenterClient.java
index 8370a41568d0..7ef2a5cf3c8f 100644
--- a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevCenterClient.java
+++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevCenterClient.java
@@ -38,34 +38,15 @@ public final class DevCenterClient {
 
     /**
      * Lists all projects.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -89,9 +70,7 @@ public PagedIterable listProjects(RequestOptions requestOptions) {
 
     /**
      * Gets a project.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevCenterClientBuilder.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevCenterClientBuilder.java
index 3962552410ca..d2759d9c3a00 100644
--- a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevCenterClientBuilder.java
+++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/DevCenterClientBuilder.java
@@ -21,8 +21,8 @@
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
 import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.RequestIdPolicy;
@@ -284,7 +284,8 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
@@ -292,12 +293,15 @@ private HttpPipeline createHttpPipeline() {
         if (tokenCredential != null) {
             policies.add(new BearerTokenAuthenticationPolicy(tokenCredential, DEFAULT_SCOPES));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/implementation/DeploymentEnvironmentsClientImpl.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/implementation/DeploymentEnvironmentsClientImpl.java
index c803e09cc647..f92a68fd5e15 100644
--- a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/implementation/DeploymentEnvironmentsClientImpl.java
+++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/implementation/DeploymentEnvironmentsClientImpl.java
@@ -158,8 +158,7 @@ public DeploymentEnvironmentsClientImpl(HttpPipeline httpPipeline, SerializerAda
     }
 
     /**
-     * The interface defining all the services for DeploymentEnvironmentsClient to be used by the proxy service to
-     * perform REST calls.
+     * The interface defining all the services for DeploymentEnvironmentsClient to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}")
     @ServiceInterface(name = "DeploymentEnvironmen")
@@ -523,28 +522,14 @@ Response listEnvironmentTypesNextSync(
 
     /**
      * Lists the environments for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -576,8 +561,7 @@ Response listEnvironmentTypesNextSync(
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return results of the environment list operation along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return results of the environment list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listAllEnvironmentsSinglePageAsync(String projectName,
@@ -592,28 +576,14 @@ private Mono> listAllEnvironmentsSinglePageAsync(Strin
 
     /**
      * Lists the environments for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -658,28 +628,14 @@ public PagedFlux listAllEnvironmentsAsync(String projectName, Reques
 
     /**
      * Lists the environments for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -724,28 +680,14 @@ private PagedResponse listAllEnvironmentsSinglePage(String projectNa
 
     /**
      * Lists the environments for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -790,28 +732,14 @@ public PagedIterable listAllEnvironments(String projectName, Request
 
     /**
      * Lists the environments for a project and user.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -838,15 +766,13 @@ public PagedIterable listAllEnvironments(String projectName, Request
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return results of the environment list operation along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return results of the environment list operation along with {@link PagedResponse} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> listEnvironmentsSinglePageAsync(String projectName, String userId, @@ -861,28 +787,14 @@ private Mono> listEnvironmentsSinglePageAsync(String p /** * Lists the environments for a project and user. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -909,8 +821,7 @@ private Mono> listEnvironmentsSinglePageAsync(String p
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -930,28 +841,14 @@ public PagedFlux listEnvironmentsAsync(String projectName, String us /** * Lists the environments for a project and user. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -978,8 +875,7 @@ public PagedFlux listEnvironmentsAsync(String projectName, String us
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -999,28 +895,14 @@ private PagedResponse listEnvironmentsSinglePage(String projectName, /** * Lists the environments for a project and user. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -1047,8 +929,7 @@ private PagedResponse listEnvironmentsSinglePage(String projectName,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -1068,9 +949,7 @@ public PagedIterable listEnvironments(String projectName, String use /** * Gets an environment. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -1097,8 +976,7 @@ public PagedIterable listEnvironments(String projectName, String use
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -1118,9 +996,7 @@ public Mono> getEnvironmentWithResponseAsync(String project /** * Gets an environment. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -1147,8 +1023,7 @@ public Mono> getEnvironmentWithResponseAsync(String project
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -1167,9 +1042,7 @@ public Response getEnvironmentWithResponse(String projectName, Strin /** * Creates or updates an environment. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -1194,9 +1067,7 @@ public Response getEnvironmentWithResponse(String projectName, Strin
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -1223,8 +1094,7 @@ public Response getEnvironmentWithResponse(String projectName, Strin
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param body Represents an environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -1245,9 +1115,7 @@ private Mono> createOrUpdateEnvironmentWithResponseAsync(St /** * Creates or updates an environment. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -1272,9 +1140,7 @@ private Mono> createOrUpdateEnvironmentWithResponseAsync(St
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -1301,8 +1167,7 @@ private Mono> createOrUpdateEnvironmentWithResponseAsync(St
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param body Represents an environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -1322,9 +1187,7 @@ private Response createOrUpdateEnvironmentWithResponse(String projec /** * Creates or updates an environment. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -1349,9 +1212,7 @@ private Response createOrUpdateEnvironmentWithResponse(String projec
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -1378,8 +1239,7 @@ private Response createOrUpdateEnvironmentWithResponse(String projec
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param body Represents an environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -1397,7 +1257,8 @@ public PollerFlux beginCreateOrUpdateEnvironmentAsync(St requestOptions), new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); @@ -1405,9 +1266,7 @@ public PollerFlux beginCreateOrUpdateEnvironmentAsync(St /** * Creates or updates an environment. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -1432,9 +1291,7 @@ public PollerFlux beginCreateOrUpdateEnvironmentAsync(St
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -1461,8 +1318,7 @@ public PollerFlux beginCreateOrUpdateEnvironmentAsync(St
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param body Represents an environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -1480,7 +1336,8 @@ public SyncPoller beginCreateOrUpdateEnvironment(String requestOptions), new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); @@ -1488,9 +1345,7 @@ public SyncPoller beginCreateOrUpdateEnvironment(String /** * Deletes an environment and all its associated resources. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -1509,16 +1364,14 @@ public SyncPoller beginCreateOrUpdateEnvironment(String
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the current status of an async operation along with {@link Response} on successful completion of - * {@link Mono}. + * @return the current status of an async operation along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> deleteEnvironmentWithResponseAsync(String projectName, String userId, @@ -1531,9 +1384,7 @@ private Mono> deleteEnvironmentWithResponseAsync(String pro /** * Deletes an environment and all its associated resources. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -1552,8 +1403,7 @@ private Mono> deleteEnvironmentWithResponseAsync(String pro
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -1572,9 +1422,7 @@ private Response deleteEnvironmentWithResponse(String projectName, S /** * Deletes an environment and all its associated resources. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -1593,8 +1441,7 @@ private Response deleteEnvironmentWithResponse(String projectName, S
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -1610,7 +1457,8 @@ public PollerFlux beginDeleteEnvironmentAsync(String projectNa () -> this.deleteEnvironmentWithResponseAsync(projectName, userId, environmentName, requestOptions), new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(Void.class)); @@ -1618,9 +1466,7 @@ public PollerFlux beginDeleteEnvironmentAsync(String projectNa /** * Deletes an environment and all its associated resources. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -1639,8 +1485,7 @@ public PollerFlux beginDeleteEnvironmentAsync(String projectNa
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param environmentName The name of the environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -1656,7 +1501,8 @@ public SyncPoller beginDeleteEnvironment(String projectName, S () -> this.deleteEnvironmentWithResponse(projectName, userId, environmentName, requestOptions), new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(Void.class)); @@ -1664,28 +1510,14 @@ public SyncPoller beginDeleteEnvironment(String projectName, S /** * Lists all of the catalogs available for a project. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1698,8 +1530,7 @@ public SyncPoller beginDeleteEnvironment(String projectName, S
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return results of the catalog list operation along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return results of the catalog list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listCatalogsSinglePageAsync(String projectName,
@@ -1714,28 +1545,14 @@ private Mono> listCatalogsSinglePageAsync(String proje
 
     /**
      * Lists all of the catalogs available for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1761,28 +1578,14 @@ public PagedFlux listCatalogsAsync(String projectName, RequestOption
 
     /**
      * Lists all of the catalogs available for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1808,28 +1611,14 @@ private PagedResponse listCatalogsSinglePage(String projectName, Req
 
     /**
      * Lists all of the catalogs available for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1855,9 +1644,7 @@ public PagedIterable listCatalogs(String projectName, RequestOptions
 
     /**
      * Gets the specified catalog within the project.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1871,8 +1658,7 @@ public PagedIterable listCatalogs(String projectName, RequestOptions
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the specified catalog within the project along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the specified catalog within the project along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getCatalogWithResponseAsync(String projectName, String catalogName,
@@ -1884,9 +1670,7 @@ public Mono> getCatalogWithResponseAsync(String projectName
 
     /**
      * Gets the specified catalog within the project.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1912,28 +1696,14 @@ public Response getCatalogWithResponse(String projectName, String ca
 
     /**
      * Lists all environment definitions available for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1965,8 +1735,7 @@ public Response getCatalogWithResponse(String projectName, String ca
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return results of the environment definition list operation along with {@link PagedResponse} on successful
-     * completion of {@link Mono}.
+     * @return results of the environment definition list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listEnvironmentDefinitionsSinglePageAsync(String projectName,
@@ -1981,28 +1750,14 @@ private Mono> listEnvironmentDefinitionsSinglePageAsyn
 
     /**
      * Lists all environment definitions available for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2047,28 +1802,14 @@ public PagedFlux listEnvironmentDefinitionsAsync(String projectName,
 
     /**
      * Lists all environment definitions available for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2114,28 +1855,14 @@ private PagedResponse listEnvironmentDefinitionsSinglePage(String pr
 
     /**
      * Lists all environment definitions available for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2180,28 +1907,14 @@ public PagedIterable listEnvironmentDefinitions(String projectName,
 
     /**
      * Lists all environment definitions available within a catalog.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2234,8 +1947,7 @@ public PagedIterable listEnvironmentDefinitions(String projectName,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return results of the environment definition list operation along with {@link PagedResponse} on successful
-     * completion of {@link Mono}.
+     * @return results of the environment definition list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listEnvironmentDefinitionsByCatalogSinglePageAsync(String projectName,
@@ -2250,28 +1962,14 @@ private Mono> listEnvironmentDefinitionsByCatalogSingl
 
     /**
      * Lists all environment definitions available within a catalog.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2319,28 +2017,14 @@ public PagedFlux listEnvironmentDefinitionsByCatalogAsync(String pro
 
     /**
      * Lists all environment definitions available within a catalog.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2387,28 +2071,14 @@ private PagedResponse listEnvironmentDefinitionsByCatalogSinglePage(
 
     /**
      * Lists all environment definitions available within a catalog.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2456,9 +2126,7 @@ public PagedIterable listEnvironmentDefinitionsByCatalog(String proj
 
     /**
      * Get an environment definition from a catalog.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2492,8 +2160,7 @@ public PagedIterable listEnvironmentDefinitionsByCatalog(String proj
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return an environment definition from a catalog along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return an environment definition from a catalog along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getEnvironmentDefinitionWithResponseAsync(String projectName, String catalogName,
@@ -2506,9 +2173,7 @@ public Mono> getEnvironmentDefinitionWithResponseAsync(Stri
 
     /**
      * Get an environment definition from a catalog.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2554,28 +2219,14 @@ public Response getEnvironmentDefinitionWithResponse(String projectN
 
     /**
      * Lists all environment types configured for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2590,8 +2241,7 @@ public Response getEnvironmentDefinitionWithResponse(String projectN
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return result of the environment type list operation along with {@link PagedResponse} on successful completion
-     * of {@link Mono}.
+     * @return result of the environment type list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listEnvironmentTypesSinglePageAsync(String projectName,
@@ -2606,28 +2256,14 @@ private Mono> listEnvironmentTypesSinglePageAsync(Stri
 
     /**
      * Lists all environment types configured for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2655,28 +2291,14 @@ public PagedFlux listEnvironmentTypesAsync(String projectName, Reque
 
     /**
      * Lists all environment types configured for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2705,28 +2327,14 @@ private PagedResponse listEnvironmentTypesSinglePage(String projectN
 
     /**
      * Lists all environment types configured for a project.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2754,9 +2362,7 @@ public PagedIterable listEnvironmentTypes(String projectName, Reques
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -2790,8 +2396,7 @@ public PagedIterable listEnvironmentTypes(String projectName, Reques
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return results of the environment list operation along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return results of the environment list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listAllEnvironmentsNextSinglePageAsync(String nextLink,
@@ -2805,9 +2410,7 @@ private Mono> listAllEnvironmentsNextSinglePageAsync(S
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -2855,9 +2458,7 @@ private PagedResponse listAllEnvironmentsNextSinglePage(String nextL
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -2891,8 +2492,7 @@ private PagedResponse listAllEnvironmentsNextSinglePage(String nextL
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return results of the environment list operation along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return results of the environment list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listEnvironmentsNextSinglePageAsync(String nextLink,
@@ -2907,9 +2507,7 @@ private Mono> listEnvironmentsNextSinglePageAsync(Stri
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     parameters: Object (Optional)
@@ -2956,9 +2554,7 @@ private PagedResponse listEnvironmentsNextSinglePage(String nextLink
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2973,8 +2569,7 @@ private PagedResponse listEnvironmentsNextSinglePage(String nextLink
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return results of the catalog list operation along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return results of the catalog list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listCatalogsNextSinglePageAsync(String nextLink,
@@ -2989,9 +2584,7 @@ private Mono> listCatalogsNextSinglePageAsync(String n
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -3019,9 +2612,7 @@ private PagedResponse listCatalogsNextSinglePage(String nextLink, Re
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3055,8 +2646,7 @@ private PagedResponse listCatalogsNextSinglePage(String nextLink, Re
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return results of the environment definition list operation along with {@link PagedResponse} on successful
-     * completion of {@link Mono}.
+     * @return results of the environment definition list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listEnvironmentDefinitionsNextSinglePageAsync(String nextLink,
@@ -3071,9 +2661,7 @@ private Mono> listEnvironmentDefinitionsNextSinglePage
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3121,9 +2709,7 @@ private PagedResponse listEnvironmentDefinitionsNextSinglePage(Strin
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3157,8 +2743,7 @@ private PagedResponse listEnvironmentDefinitionsNextSinglePage(Strin
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return results of the environment definition list operation along with {@link PagedResponse} on successful
-     * completion of {@link Mono}.
+     * @return results of the environment definition list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listEnvironmentDefinitionsByCatalogNextSinglePageAsync(String nextLink,
@@ -3173,9 +2758,7 @@ private Mono> listEnvironmentDefinitionsByCatalogNextS
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3223,9 +2806,7 @@ private PagedResponse listEnvironmentDefinitionsByCatalogNextSingleP
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -3242,8 +2823,7 @@ private PagedResponse listEnvironmentDefinitionsByCatalogNextSingleP
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return result of the environment type list operation along with {@link PagedResponse} on successful completion
-     * of {@link Mono}.
+     * @return result of the environment type list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listEnvironmentTypesNextSinglePageAsync(String nextLink,
@@ -3257,9 +2837,7 @@ private Mono> listEnvironmentTypesNextSinglePageAsync(
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/implementation/DevBoxesClientImpl.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/implementation/DevBoxesClientImpl.java
index a76aa5cbd3b6..c70c789eac2c 100644
--- a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/implementation/DevBoxesClientImpl.java
+++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/implementation/DevBoxesClientImpl.java
@@ -158,8 +158,7 @@ public DevBoxesClientImpl(HttpPipeline httpPipeline, SerializerAdapter serialize
     }
 
     /**
-     * The interface defining all the services for DevBoxesClient to be used by the proxy service to perform REST
-     * calls.
+     * The interface defining all the services for DevBoxesClient to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}")
     @ServiceInterface(name = "DevBoxesClient")
@@ -729,34 +728,15 @@ Response delayAllActionsNextSync(@PathParam(value = "nextLink", enco
 
     /**
      * Lists available pools.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -810,34 +790,15 @@ private Mono> listPoolsSinglePageAsync(String projectN
 
     /**
      * Lists available pools.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -889,34 +850,15 @@ public PagedFlux listPoolsAsync(String projectName, RequestOptions r
 
     /**
      * Lists available pools.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -968,34 +910,15 @@ private PagedResponse listPoolsSinglePage(String projectName, Reques
 
     /**
      * Lists available pools.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1047,9 +970,7 @@ public PagedIterable listPools(String projectName, RequestOptions re
 
     /**
      * Gets a pool.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1101,9 +1022,7 @@ public Mono> getPoolWithResponseAsync(String projectName, S
 
     /**
      * Gets a pool.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1155,34 +1074,15 @@ public Response getPoolWithResponse(String projectName, String poolN
 
     /**
      * Lists available schedules for a pool.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1215,34 +1115,15 @@ private Mono> listSchedulesSinglePageAsync(String proj
 
     /**
      * Lists available schedules for a pool.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1274,34 +1155,15 @@ public PagedFlux listSchedulesAsync(String projectName, String poolN
 
     /**
      * Lists available schedules for a pool.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1333,34 +1195,15 @@ private PagedResponse listSchedulesSinglePage(String projectName, St
 
     /**
      * Lists available schedules for a pool.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1391,9 +1234,7 @@ public PagedIterable listSchedules(String projectName, String poolNa
 
     /**
      * Gets a schedule.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1425,9 +1266,7 @@ public Mono> getScheduleWithResponseAsync(String projectNam
 
     /**
      * Gets a schedule.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1458,34 +1297,15 @@ public Response getScheduleWithResponse(String projectName, String p
 
     /**
      * Lists Dev Boxes that the caller has access to in the DevCenter.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1552,34 +1372,15 @@ private Mono> listAllDevBoxesSinglePageAsync(RequestOp
 
     /**
      * Lists Dev Boxes that the caller has access to in the DevCenter.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1645,34 +1446,15 @@ public PagedFlux listAllDevBoxesAsync(RequestOptions requestOptions)
 
     /**
      * Lists Dev Boxes that the caller has access to in the DevCenter.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1738,34 +1520,15 @@ private PagedResponse listAllDevBoxesSinglePage(RequestOptions reque
 
     /**
      * Lists Dev Boxes that the caller has access to in the DevCenter.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1831,34 +1594,15 @@ public PagedIterable listAllDevBoxes(RequestOptions requestOptions)
 
     /**
      * Lists Dev Boxes in the Dev Center for a particular user.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -1906,8 +1650,7 @@ public PagedIterable listAllDevBoxes(RequestOptions requestOptions)
      * }
      * }
* - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -1928,34 +1671,15 @@ private Mono> listAllDevBoxesByUserSinglePageAsync(Str /** * Lists Dev Boxes in the Dev Center for a particular user. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2003,8 +1727,7 @@ private Mono> listAllDevBoxesByUserSinglePageAsync(Str
      * }
      * }
* - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2023,34 +1746,15 @@ public PagedFlux listAllDevBoxesByUserAsync(String userId, RequestOp /** * Lists Dev Boxes in the Dev Center for a particular user. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2098,8 +1802,7 @@ public PagedFlux listAllDevBoxesByUserAsync(String userId, RequestOp
      * }
      * }
* - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2118,34 +1821,15 @@ private PagedResponse listAllDevBoxesByUserSinglePage(String userId, /** * Lists Dev Boxes in the Dev Center for a particular user. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2193,8 +1877,7 @@ private PagedResponse listAllDevBoxesByUserSinglePage(String userId,
      * }
      * }
* - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2213,34 +1896,15 @@ public PagedIterable listAllDevBoxesByUser(String userId, RequestOpt /** * Lists Dev Boxes in the project for a particular user. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2289,8 +1953,7 @@ public PagedIterable listAllDevBoxesByUser(String userId, RequestOpt
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2311,34 +1974,15 @@ private Mono> listDevBoxesSinglePageAsync(String proje /** * Lists Dev Boxes in the project for a particular user. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2387,8 +2031,7 @@ private Mono> listDevBoxesSinglePageAsync(String proje
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2407,34 +2050,15 @@ public PagedFlux listDevBoxesAsync(String projectName, String userId /** * Lists Dev Boxes in the project for a particular user. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2483,8 +2107,7 @@ public PagedFlux listDevBoxesAsync(String projectName, String userId
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2504,34 +2127,15 @@ private PagedResponse listDevBoxesSinglePage(String projectName, Str /** * Lists Dev Boxes in the project for a particular user. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2580,8 +2184,7 @@ private PagedResponse listDevBoxesSinglePage(String projectName, Str
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2600,9 +2203,7 @@ public PagedIterable listDevBoxes(String projectName, String userId, /** * Gets a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2651,8 +2252,7 @@ public PagedIterable listDevBoxes(String projectName, String userId,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -2671,9 +2271,7 @@ public Mono> getDevBoxWithResponseAsync(String projectName, /** * Gets a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2722,8 +2320,7 @@ public Mono> getDevBoxWithResponseAsync(String projectName,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -2742,9 +2339,7 @@ public Response getDevBoxWithResponse(String projectName, String use /** * Creates or replaces a Dev Box. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2791,9 +2386,7 @@ public Response getDevBoxWithResponse(String projectName, String use
      *     localAdministrator: String(Enabled/Disabled) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2842,8 +2435,7 @@ public Response getDevBoxWithResponse(String projectName, String use
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param body Represents a environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -2864,9 +2456,7 @@ private Mono> createDevBoxWithResponseAsync(String projectN /** * Creates or replaces a Dev Box. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2913,9 +2503,7 @@ private Mono> createDevBoxWithResponseAsync(String projectN
      *     localAdministrator: String(Enabled/Disabled) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -2964,8 +2552,7 @@ private Mono> createDevBoxWithResponseAsync(String projectN
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param body Represents a environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -2985,9 +2572,7 @@ private Response createDevBoxWithResponse(String projectName, String /** * Creates or replaces a Dev Box. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -3034,9 +2619,7 @@ private Response createDevBoxWithResponse(String projectName, String
      *     localAdministrator: String(Enabled/Disabled) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -3085,8 +2668,7 @@ private Response createDevBoxWithResponse(String projectName, String
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param body Represents a environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -3103,7 +2685,8 @@ public PollerFlux beginCreateDevBoxAsync(String projectN () -> this.createDevBoxWithResponseAsync(projectName, userId, devBoxName, body, requestOptions), new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); @@ -3111,9 +2694,7 @@ public PollerFlux beginCreateDevBoxAsync(String projectN /** * Creates or replaces a Dev Box. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -3160,9 +2741,7 @@ public PollerFlux beginCreateDevBoxAsync(String projectN
      *     localAdministrator: String(Enabled/Disabled) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -3211,8 +2790,7 @@ public PollerFlux beginCreateDevBoxAsync(String projectN
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param body Represents a environment. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -3229,7 +2807,8 @@ public SyncPoller beginCreateDevBox(String projectName, () -> this.createDevBoxWithResponse(projectName, userId, devBoxName, body, requestOptions), new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); @@ -3237,9 +2816,7 @@ public SyncPoller beginCreateDevBox(String projectName, /** * Deletes a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3258,16 +2835,14 @@ public SyncPoller beginCreateDevBox(String projectName,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the current status of an async operation along with {@link Response} on successful completion of - * {@link Mono}. + * @return the current status of an async operation along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> deleteDevBoxWithResponseAsync(String projectName, String userId, @@ -3279,9 +2854,7 @@ private Mono> deleteDevBoxWithResponseAsync(String projectN /** * Deletes a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3300,8 +2873,7 @@ private Mono> deleteDevBoxWithResponseAsync(String projectN
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -3320,9 +2892,7 @@ private Response deleteDevBoxWithResponse(String projectName, String /** * Deletes a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3341,8 +2911,7 @@ private Response deleteDevBoxWithResponse(String projectName, String
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -3358,7 +2927,8 @@ public PollerFlux beginDeleteDevBoxAsync(String projectName, S () -> this.deleteDevBoxWithResponseAsync(projectName, userId, devBoxName, requestOptions), new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(Void.class)); @@ -3366,9 +2936,7 @@ public PollerFlux beginDeleteDevBoxAsync(String projectName, S /** * Deletes a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3387,8 +2955,7 @@ public PollerFlux beginDeleteDevBoxAsync(String projectName, S
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -3404,7 +2971,8 @@ public SyncPoller beginDeleteDevBox(String projectName, String () -> this.deleteDevBoxWithResponse(projectName, userId, devBoxName, requestOptions), new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(Void.class)); @@ -3412,9 +2980,7 @@ public SyncPoller beginDeleteDevBox(String projectName, String /** * Starts a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3433,16 +2999,14 @@ public SyncPoller beginDeleteDevBox(String projectName, String
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the current status of an async operation along with {@link Response} on successful completion of - * {@link Mono}. + * @return the current status of an async operation along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> startDevBoxWithResponseAsync(String projectName, String userId, @@ -3454,9 +3018,7 @@ private Mono> startDevBoxWithResponseAsync(String projectNa /** * Starts a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3475,8 +3037,7 @@ private Mono> startDevBoxWithResponseAsync(String projectNa
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -3495,9 +3056,7 @@ private Response startDevBoxWithResponse(String projectName, String /** * Starts a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3516,8 +3075,7 @@ private Response startDevBoxWithResponse(String projectName, String
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -3533,7 +3091,8 @@ public PollerFlux beginStartDevBoxAsync(String projectNa () -> this.startDevBoxWithResponseAsync(projectName, userId, devBoxName, requestOptions), new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); @@ -3541,9 +3100,7 @@ public PollerFlux beginStartDevBoxAsync(String projectNa /** * Starts a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3562,8 +3119,7 @@ public PollerFlux beginStartDevBoxAsync(String projectNa
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -3579,7 +3135,8 @@ public SyncPoller beginStartDevBox(String projectName, S () -> this.startDevBoxWithResponse(projectName, userId, devBoxName, requestOptions), new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); @@ -3587,28 +3144,14 @@ public SyncPoller beginStartDevBox(String projectName, S /** * Stops a Dev Box. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
hibernateBooleanNoOptional parameter to hibernate the dev box.
Query Parameters
NameTypeRequiredDescription
hibernateBooleanNoOptional parameter to hibernate the dev box.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3627,16 +3170,14 @@ public SyncPoller beginStartDevBox(String projectName, S
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the current status of an async operation along with {@link Response} on successful completion of - * {@link Mono}. + * @return the current status of an async operation along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> stopDevBoxWithResponseAsync(String projectName, String userId, String devBoxName, @@ -3648,28 +3189,14 @@ private Mono> stopDevBoxWithResponseAsync(String projectNam /** * Stops a Dev Box. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
hibernateBooleanNoOptional parameter to hibernate the dev box.
Query Parameters
NameTypeRequiredDescription
hibernateBooleanNoOptional parameter to hibernate the dev box.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3688,8 +3215,7 @@ private Mono> stopDevBoxWithResponseAsync(String projectNam
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -3708,28 +3234,14 @@ private Response stopDevBoxWithResponse(String projectName, String u /** * Stops a Dev Box. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
hibernateBooleanNoOptional parameter to hibernate the dev box.
Query Parameters
NameTypeRequiredDescription
hibernateBooleanNoOptional parameter to hibernate the dev box.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3748,8 +3260,7 @@ private Response stopDevBoxWithResponse(String projectName, String u
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -3765,7 +3276,8 @@ public PollerFlux beginStopDevBoxAsync(String projectNam () -> this.stopDevBoxWithResponseAsync(projectName, userId, devBoxName, requestOptions), new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); @@ -3773,28 +3285,14 @@ public PollerFlux beginStopDevBoxAsync(String projectNam /** * Stops a Dev Box. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
hibernateBooleanNoOptional parameter to hibernate the dev box.
Query Parameters
NameTypeRequiredDescription
hibernateBooleanNoOptional parameter to hibernate the dev box.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3813,8 +3311,7 @@ public PollerFlux beginStopDevBoxAsync(String projectNam
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -3830,7 +3327,8 @@ public SyncPoller beginStopDevBox(String projectName, St () -> this.stopDevBoxWithResponse(projectName, userId, devBoxName, requestOptions), new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); @@ -3838,9 +3336,7 @@ public SyncPoller beginStopDevBox(String projectName, St /** * Restarts a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3859,16 +3355,14 @@ public SyncPoller beginStopDevBox(String projectName, St
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the current status of an async operation along with {@link Response} on successful completion of - * {@link Mono}. + * @return the current status of an async operation along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> restartDevBoxWithResponseAsync(String projectName, String userId, @@ -3880,9 +3374,7 @@ private Mono> restartDevBoxWithResponseAsync(String project /** * Restarts a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3901,8 +3393,7 @@ private Mono> restartDevBoxWithResponseAsync(String project
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -3921,9 +3412,7 @@ private Response restartDevBoxWithResponse(String projectName, Strin /** * Restarts a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3942,8 +3431,7 @@ private Response restartDevBoxWithResponse(String projectName, Strin
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -3959,7 +3447,8 @@ public PollerFlux beginRestartDevBoxAsync(String project () -> this.restartDevBoxWithResponseAsync(projectName, userId, devBoxName, requestOptions), new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); @@ -3967,9 +3456,7 @@ public PollerFlux beginRestartDevBoxAsync(String project /** * Restarts a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3988,8 +3475,7 @@ public PollerFlux beginRestartDevBoxAsync(String project
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -4005,7 +3491,8 @@ public SyncPoller beginRestartDevBox(String projectName, () -> this.restartDevBoxWithResponse(projectName, userId, devBoxName, requestOptions), new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline()) .setEndpoint("{endpoint}".replace("{endpoint}", this.getEndpoint())) - .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() : Context.NONE) .setServiceVersion(this.getServiceVersion().getVersion())), TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); @@ -4013,9 +3500,7 @@ public SyncPoller beginRestartDevBox(String projectName, /** * Gets RDP Connection info. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     webUrl: String (Optional)
@@ -4024,8 +3509,7 @@ public SyncPoller beginRestartDevBox(String projectName,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -4044,9 +3528,7 @@ public Mono> getRemoteConnectionWithResponseAsync(String pr /** * Gets RDP Connection info. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     webUrl: String (Optional)
@@ -4055,8 +3537,7 @@ public Mono> getRemoteConnectionWithResponseAsync(String pr
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -4075,9 +3556,7 @@ public Response getRemoteConnectionWithResponse(String projectName, /** * Lists actions on a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4091,8 +3570,7 @@ public Response getRemoteConnectionWithResponse(String projectName,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -4114,9 +3592,7 @@ private Mono> listDevBoxActionsSinglePageAsync(String /** * Lists actions on a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4130,8 +3606,7 @@ private Mono> listDevBoxActionsSinglePageAsync(String
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -4152,9 +3627,7 @@ public PagedFlux listDevBoxActionsAsync(String projectName, String u /** * Lists actions on a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4168,8 +3641,7 @@ public PagedFlux listDevBoxActionsAsync(String projectName, String u
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -4191,9 +3663,7 @@ private PagedResponse listDevBoxActionsSinglePage(String projectName /** * Lists actions on a Dev Box. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4207,8 +3677,7 @@ private PagedResponse listDevBoxActionsSinglePage(String projectName
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. @@ -4229,9 +3698,7 @@ public PagedIterable listDevBoxActions(String projectName, String us /** * Gets an action. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4245,8 +3712,7 @@ public PagedIterable listDevBoxActions(String projectName, String us
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param actionName The name of an action that will take place on a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -4267,9 +3733,7 @@ public Mono> getDevBoxActionWithResponseAsync(String projec /** * Gets an action. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4283,8 +3747,7 @@ public Mono> getDevBoxActionWithResponseAsync(String projec
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param actionName The name of an action that will take place on a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -4306,8 +3769,7 @@ public Response getDevBoxActionWithResponse(String projectName, Stri * Skips an occurrence of an action. * * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param actionName The name of an action that will take place on a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -4330,8 +3792,7 @@ public Mono> skipActionWithResponseAsync(String projectName, Stri * Skips an occurrence of an action. * * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param actionName The name of an action that will take place on a Dev Box. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -4351,9 +3812,7 @@ public Response skipActionWithResponse(String projectName, String userId, /** * Delays the occurrence of an action. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4367,8 +3826,7 @@ public Response skipActionWithResponse(String projectName, String userId,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param actionName The name of an action that will take place on a Dev Box. * @param delayUntil The time to delay the Dev Box action or actions until. @@ -4377,8 +3835,7 @@ public Response skipActionWithResponse(String projectName, String userId, * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an action which will take place on a Dev Box along with {@link Response} on successful completion of - * {@link Mono}. + * @return an action which will take place on a Dev Box along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) public Mono> delayActionWithResponseAsync(String projectName, String userId, String devBoxName, @@ -4391,9 +3848,7 @@ public Mono> delayActionWithResponseAsync(String projectNam /** * Delays the occurrence of an action. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4407,8 +3862,7 @@ public Mono> delayActionWithResponseAsync(String projectNam
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param actionName The name of an action that will take place on a Dev Box. * @param delayUntil The time to delay the Dev Box action or actions until. @@ -4429,9 +3883,7 @@ public Response delayActionWithResponse(String projectName, String u /** * Delays all actions. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4461,8 +3913,7 @@ public Response delayActionWithResponse(String projectName, String u
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param delayUntil The time to delay the Dev Box action or actions until. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -4485,9 +3936,7 @@ private Mono> delayAllActionsSinglePageAsync(String pr /** * Delays all actions. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4517,8 +3966,7 @@ private Mono> delayAllActionsSinglePageAsync(String pr
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param delayUntil The time to delay the Dev Box action or actions until. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -4541,9 +3989,7 @@ public PagedFlux delayAllActionsAsync(String projectName, String use /** * Delays all actions. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4573,8 +4019,7 @@ public PagedFlux delayAllActionsAsync(String projectName, String use
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param delayUntil The time to delay the Dev Box action or actions until. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -4597,9 +4042,7 @@ private PagedResponse delayAllActionsSinglePage(String projectName, /** * Delays all actions. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4629,8 +4072,7 @@ private PagedResponse delayAllActionsSinglePage(String projectName,
      * }
* * @param projectName The DevCenter Project upon which to execute operations. - * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication - * context. + * @param userId The AAD object id of the user. If value is 'me', the identity is taken from the authentication context. * @param devBoxName The name of a Dev Box. * @param delayUntil The time to delay the Dev Box action or actions until. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. @@ -4653,9 +4095,7 @@ public PagedIterable delayAllActions(String projectName, String user /** * Get the next page of items. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4711,9 +4151,7 @@ private Mono> listPoolsNextSinglePageAsync(String next
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4767,9 +4205,7 @@ private PagedResponse listPoolsNextSinglePage(String nextLink, Reque
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4803,9 +4239,7 @@ private Mono> listSchedulesNextSinglePageAsync(String
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4837,9 +4271,7 @@ private PagedResponse listSchedulesNextSinglePage(String nextLink, R
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4910,9 +4342,7 @@ private Mono> listAllDevBoxesNextSinglePageAsync(Strin
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -4981,9 +4411,7 @@ private PagedResponse listAllDevBoxesNextSinglePage(String nextLink,
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -5053,9 +4481,7 @@ private Mono> listAllDevBoxesByUserNextSinglePageAsync
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -5125,9 +4551,7 @@ private PagedResponse listAllDevBoxesByUserNextSinglePage(String nex
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -5198,9 +4622,7 @@ private Mono> listDevBoxesNextSinglePageAsync(String n
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -5269,9 +4691,7 @@ private PagedResponse listDevBoxesNextSinglePage(String nextLink, Re
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -5307,9 +4727,7 @@ private Mono> listDevBoxActionsNextSinglePageAsync(Str
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -5343,9 +4761,7 @@ private PagedResponse listDevBoxActionsNextSinglePage(String nextLin
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -5397,9 +4813,7 @@ private Mono> delayAllActionsNextSinglePageAsync(Strin
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/implementation/DevCenterClientImpl.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/implementation/DevCenterClientImpl.java
index c752754c2de2..9b656f07e502 100644
--- a/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/implementation/DevCenterClientImpl.java
+++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/com/azure/developer/devcenter/implementation/DevCenterClientImpl.java
@@ -146,8 +146,7 @@ public DevCenterClientImpl(HttpPipeline httpPipeline, SerializerAdapter serializ
     }
 
     /**
-     * The interface defining all the services for DevCenterClient to be used by the proxy service to perform REST
-     * calls.
+     * The interface defining all the services for DevCenterClient to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}")
     @ServiceInterface(name = "DevCenterClient")
@@ -215,34 +214,15 @@ Response listProjectsNextSync(@PathParam(value = "nextLink", encoded
 
     /**
      * Lists all projects.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -256,8 +236,7 @@ Response listProjectsNextSync(@PathParam(value = "nextLink", encoded
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return results of the project list operation along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return results of the project list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listProjectsSinglePageAsync(RequestOptions requestOptions) {
@@ -271,34 +250,15 @@ private Mono> listProjectsSinglePageAsync(RequestOptio
 
     /**
      * Lists all projects.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -325,34 +285,15 @@ public PagedFlux listProjectsAsync(RequestOptions requestOptions) {
 
     /**
      * Lists all projects.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -379,34 +320,15 @@ private PagedResponse listProjectsSinglePage(RequestOptions requestO
 
     /**
      * Lists all projects.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
Query Parameters
NameTypeRequiredDescription
filterStringNoAn OData filter clause to apply to the operation.
topIntegerNoThe maximum number of resources to return from the operation. Example: 'top=10'.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -433,9 +355,7 @@ public PagedIterable listProjects(RequestOptions requestOptions) {
 
     /**
      * Gets a project.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -461,9 +381,7 @@ public Mono> getProjectWithResponseAsync(String projectName
 
     /**
      * Gets a project.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -489,9 +407,7 @@ public Response getProjectWithResponse(String projectName, RequestOp
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
@@ -508,8 +424,7 @@ public Response getProjectWithResponse(String projectName, RequestOp
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return results of the project list operation along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return results of the project list operation along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listProjectsNextSinglePageAsync(String nextLink,
@@ -524,9 +439,7 @@ private Mono> listProjectsNextSinglePageAsync(String n
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     name: String (Required)
diff --git a/sdk/devcenter/azure-developer-devcenter/src/main/java/module-info.java b/sdk/devcenter/azure-developer-devcenter/src/main/java/module-info.java
index 1f5da06735a2..0cd84ce11065 100644
--- a/sdk/devcenter/azure-developer-devcenter/src/main/java/module-info.java
+++ b/sdk/devcenter/azure-developer-devcenter/src/main/java/module-info.java
@@ -4,5 +4,6 @@
 
 module com.azure.developer.devcenter {
     requires transitive com.azure.core;
+    requires transitive com.azure.json;
     exports com.azure.developer.devcenter;
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationAsyncClient.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationAsyncClient.java
index a7c3e1826c8f..9ce905b8acd2 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationAsyncClient.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationAsyncClient.java
@@ -58,9 +58,7 @@ public final class DocumentIntelligenceAdministrationAsyncClient {
 
     /**
      * Builds a custom document analysis model.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -97,9 +95,7 @@ public PollerFlux beginBuildDocumentModel(BinaryData bui
 
     /**
      * Creates a new document model from document types of existing document models.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -133,9 +129,7 @@ public PollerFlux beginComposeModel(BinaryData composeRe
     /**
      * Generates authorization to copy a document model to this location with
      * specified modelId and optional description.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -145,9 +139,7 @@ public PollerFlux beginComposeModel(BinaryData composeRe
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     targetResourceId: String (Required)
@@ -177,9 +169,7 @@ public Mono> authorizeModelCopyWithResponse(BinaryData auth
 
     /**
      * Copies document model to the target resource, region, and modelId.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     targetResourceId: String (Required)
@@ -209,9 +199,7 @@ public PollerFlux beginCopyModelTo(String modelId, Binar
 
     /**
      * Gets detailed document model information.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -277,9 +265,7 @@ public Mono> getModelWithResponse(String modelId, RequestOp
 
     /**
      * List all document models.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -361,9 +347,7 @@ public Mono> deleteModelWithResponse(String modelId, RequestOptio
 
     /**
      * Return information about the current resource.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     customDocumentModels (Required): {
@@ -383,8 +367,7 @@ public Mono> deleteModelWithResponse(String modelId, RequestOptio
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return general information regarding the current resource along with {@link Response} on successful completion
-     * of {@link Mono}.
+     * @return general information regarding the current resource along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -394,11 +377,10 @@ public Mono> getResourceInfoWithResponse(RequestOptions req
 
     /**
      * Gets operation info.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(documentModelBuild/documentModelCompose/documentModelCopyTo/documentClassifierBuild) (Optional)
      *     operationId: String (Required)
      *     status: String(notStarted/running/failed/succeeded/completed/canceled) (Required)
      *     percentCompleted: Integer (Optional)
@@ -441,11 +423,10 @@ public Mono> getOperationWithResponse(String operationId, R
 
     /**
      * Lists all operations.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(documentModelBuild/documentModelCompose/documentModelCopyTo/documentClassifierBuild) (Optional)
      *     operationId: String (Required)
      *     status: String(notStarted/running/failed/succeeded/completed/canceled) (Required)
      *     percentCompleted: Integer (Optional)
@@ -487,9 +468,7 @@ public PagedFlux listOperations(RequestOptions requestOptions) {
 
     /**
      * Builds a custom document classifier.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -528,9 +507,7 @@ public PollerFlux beginBuildClassifier(BinaryData buildR
 
     /**
      * Gets detailed document classifier information.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -568,8 +545,7 @@ public PollerFlux beginBuildClassifier(BinaryData buildR
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return detailed document classifier information along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return detailed document classifier information along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -579,9 +555,7 @@ public Mono> getClassifierWithResponse(String classifierId,
 
     /**
      * List all document classifiers.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -705,7 +679,8 @@ public Mono authorizeModelCopy(AuthorizeCopyRequest authorize
         // Generated convenience method for authorizeModelCopyWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return authorizeModelCopyWithResponse(BinaryData.fromObject(authorizeCopyRequest), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(CopyAuthorization.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(CopyAuthorization.class));
     }
 
     /**
@@ -769,12 +744,14 @@ public PagedFlux listModels() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listModels(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux
                 .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                     pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                    pagedResponse.getValue().stream()
+                    pagedResponse.getValue()
+                        .stream()
                         .map(protocolMethodData -> protocolMethodData.toObject(DocumentModelDetails.class))
                         .collect(Collectors.toList()),
                     pagedResponse.getContinuationToken(), null));
@@ -858,11 +835,13 @@ public PagedFlux listOperations() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listOperations(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(OperationDetails.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -928,12 +907,14 @@ public PagedFlux listClassifiers() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listClassifiers(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux
                 .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                     pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                    pagedResponse.getValue().stream()
+                    pagedResponse.getValue()
+                        .stream()
                         .map(protocolMethodData -> protocolMethodData.toObject(DocumentClassifierDetails.class))
                         .collect(Collectors.toList()),
                     pagedResponse.getContinuationToken(), null));
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationClient.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationClient.java
index ed0a01190682..daa484d220df 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationClient.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationClient.java
@@ -52,9 +52,7 @@ public final class DocumentIntelligenceAdministrationClient {
 
     /**
      * Builds a custom document analysis model.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -91,9 +89,7 @@ public SyncPoller beginBuildDocumentModel(BinaryData bui
 
     /**
      * Creates a new document model from document types of existing document models.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -127,9 +123,7 @@ public SyncPoller beginComposeModel(BinaryData composeRe
     /**
      * Generates authorization to copy a document model to this location with
      * specified modelId and optional description.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -139,9 +133,7 @@ public SyncPoller beginComposeModel(BinaryData composeRe
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     targetResourceId: String (Required)
@@ -171,9 +163,7 @@ public Response authorizeModelCopyWithResponse(BinaryData authorizeC
 
     /**
      * Copies document model to the target resource, region, and modelId.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     targetResourceId: String (Required)
@@ -203,9 +193,7 @@ public SyncPoller beginCopyModelTo(String modelId, Binar
 
     /**
      * Gets detailed document model information.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -271,9 +259,7 @@ public Response getModelWithResponse(String modelId, RequestOptions
 
     /**
      * List all document models.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -355,9 +341,7 @@ public Response deleteModelWithResponse(String modelId, RequestOptions req
 
     /**
      * Return information about the current resource.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     customDocumentModels (Required): {
@@ -387,11 +371,10 @@ public Response getResourceInfoWithResponse(RequestOptions requestOp
 
     /**
      * Gets operation info.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(documentModelBuild/documentModelCompose/documentModelCopyTo/documentClassifierBuild) (Optional)
      *     operationId: String (Required)
      *     status: String(notStarted/running/failed/succeeded/completed/canceled) (Required)
      *     percentCompleted: Integer (Optional)
@@ -434,11 +417,10 @@ public Response getOperationWithResponse(String operationId, Request
 
     /**
      * Lists all operations.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(documentModelBuild/documentModelCompose/documentModelCopyTo/documentClassifierBuild) (Optional)
      *     operationId: String (Required)
      *     status: String(notStarted/running/failed/succeeded/completed/canceled) (Required)
      *     percentCompleted: Integer (Optional)
@@ -480,9 +462,7 @@ public PagedIterable listOperations(RequestOptions requestOptions) {
 
     /**
      * Builds a custom document classifier.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -521,9 +501,7 @@ public SyncPoller beginBuildClassifier(BinaryData buildR
 
     /**
      * Gets detailed document classifier information.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -571,9 +549,7 @@ public Response getClassifierWithResponse(String classifierId, Reque
 
     /**
      * List all document classifiers.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationClientBuilder.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationClientBuilder.java
index 4baf4386cb7a..a548eda5a9cf 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationClientBuilder.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAdministrationClientBuilder.java
@@ -24,8 +24,8 @@
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
 import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.KeyCredentialPolicy;
@@ -310,7 +310,8 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
@@ -321,12 +322,15 @@ private HttpPipeline createHttpPipeline() {
         if (tokenCredential != null) {
             policies.add(new BearerTokenAuthenticationPolicy(tokenCredential, DEFAULT_SCOPES));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAsyncClient.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAsyncClient.java
index ff01580c45b1..1bef8bd2bc69 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAsyncClient.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceAsyncClient.java
@@ -47,61 +47,20 @@ public final class DocumentIntelligenceAsyncClient {
 
     /**
      * Analyzes document with document model.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only - * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated - * string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only + * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -125,35 +84,15 @@ public PollerFlux beginAnalyzeDocument(String modelId, R
 
     /**
      * Classifies document with document classifier.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -181,12 +120,12 @@ public PollerFlux beginClassifyDocument(String classifie
      * Analyzes document with document model.
      * 
      * @param modelId Unique document model name.
-     * @param pages List of 1-based page numbers to analyze. Ex. "1-3,5,7-9".
-     * @param locale Locale hint for text recognition and document analysis. Value may contain only
+     * @param pages List of 1-based page numbers to analyze.  Ex. "1-3,5,7-9".
+     * @param locale Locale hint for text recognition and document analysis.  Value may contain only
      * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
      * @param stringIndexType Method used to compute string offset and length.
      * @param features List of optional analysis features.
-     * @param queryFields List of additional fields to extract. Ex. "NumberOfGuests,StoreNumber".
+     * @param queryFields List of additional fields to extract.  Ex. "NumberOfGuests,StoreNumber".
      * @param outputContentFormat Format of the analyze result top-level content.
      * @param analyzeRequest Analyze request parameters.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
@@ -214,12 +153,18 @@ public PollerFlux beginAnalyzeDo
             requestOptions.addQueryParam("stringIndexType", stringIndexType.toString(), false);
         }
         if (features != null) {
-            requestOptions.addQueryParam("features", features.stream()
-                .map(paramItemValue -> Objects.toString(paramItemValue, "")).collect(Collectors.joining(",")), false);
+            requestOptions.addQueryParam("features",
+                features.stream()
+                    .map(paramItemValue -> Objects.toString(paramItemValue, ""))
+                    .collect(Collectors.joining(",")),
+                false);
         }
         if (queryFields != null) {
-            requestOptions.addQueryParam("queryFields", queryFields.stream()
-                .map(paramItemValue -> Objects.toString(paramItemValue, "")).collect(Collectors.joining(",")), false);
+            requestOptions.addQueryParam("queryFields",
+                queryFields.stream()
+                    .map(paramItemValue -> Objects.toString(paramItemValue, ""))
+                    .collect(Collectors.joining(",")),
+                false);
         }
         if (outputContentFormat != null) {
             requestOptions.addQueryParam("outputContentFormat", outputContentFormat.toString(), false);
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceClient.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceClient.java
index 7de7f301da67..0187431eebd0 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceClient.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceClient.java
@@ -47,61 +47,20 @@ public final class DocumentIntelligenceClient {
 
     /**
      * Analyzes document with document model.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only - * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated - * string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only + * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -125,35 +84,15 @@ public SyncPoller beginAnalyzeDocument(String modelId, R
 
     /**
      * Classifies document with document classifier.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -181,12 +120,12 @@ public SyncPoller beginClassifyDocument(String classifie
      * Analyzes document with document model.
      * 
      * @param modelId Unique document model name.
-     * @param pages List of 1-based page numbers to analyze. Ex. "1-3,5,7-9".
-     * @param locale Locale hint for text recognition and document analysis. Value may contain only
+     * @param pages List of 1-based page numbers to analyze.  Ex. "1-3,5,7-9".
+     * @param locale Locale hint for text recognition and document analysis.  Value may contain only
      * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
      * @param stringIndexType Method used to compute string offset and length.
      * @param features List of optional analysis features.
-     * @param queryFields List of additional fields to extract. Ex. "NumberOfGuests,StoreNumber".
+     * @param queryFields List of additional fields to extract.  Ex. "NumberOfGuests,StoreNumber".
      * @param outputContentFormat Format of the analyze result top-level content.
      * @param analyzeRequest Analyze request parameters.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
@@ -214,12 +153,18 @@ public SyncPoller beginAnalyzeDo
             requestOptions.addQueryParam("stringIndexType", stringIndexType.toString(), false);
         }
         if (features != null) {
-            requestOptions.addQueryParam("features", features.stream()
-                .map(paramItemValue -> Objects.toString(paramItemValue, "")).collect(Collectors.joining(",")), false);
+            requestOptions.addQueryParam("features",
+                features.stream()
+                    .map(paramItemValue -> Objects.toString(paramItemValue, ""))
+                    .collect(Collectors.joining(",")),
+                false);
         }
         if (queryFields != null) {
-            requestOptions.addQueryParam("queryFields", queryFields.stream()
-                .map(paramItemValue -> Objects.toString(paramItemValue, "")).collect(Collectors.joining(",")), false);
+            requestOptions.addQueryParam("queryFields",
+                queryFields.stream()
+                    .map(paramItemValue -> Objects.toString(paramItemValue, ""))
+                    .collect(Collectors.joining(",")),
+                false);
         }
         if (outputContentFormat != null) {
             requestOptions.addQueryParam("outputContentFormat", outputContentFormat.toString(), false);
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceClientBuilder.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceClientBuilder.java
index e38af6d5b54d..68edabd7542f 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceClientBuilder.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/DocumentIntelligenceClientBuilder.java
@@ -24,8 +24,8 @@
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
 import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.KeyCredentialPolicy;
@@ -303,7 +303,8 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
@@ -314,12 +315,15 @@ private HttpPipeline createHttpPipeline() {
         if (tokenCredential != null) {
             policies.add(new BearerTokenAuthenticationPolicy(tokenCredential, DEFAULT_SCOPES));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/implementation/DocumentIntelligenceAdministrationClientImpl.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/implementation/DocumentIntelligenceAdministrationClientImpl.java
index 3abf6bda7ef7..86126cc5c5d5 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/implementation/DocumentIntelligenceAdministrationClientImpl.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/implementation/DocumentIntelligenceAdministrationClientImpl.java
@@ -165,8 +165,7 @@ public DocumentIntelligenceAdministrationClientImpl(HttpPipeline httpPipeline, S
     }
 
     /**
-     * The interface defining all the services for DocumentIntelligenceAdministrationClient to be used by the proxy
-     * service to perform REST calls.
+     * The interface defining all the services for DocumentIntelligenceAdministrationClient to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}/documentintelligence")
     @ServiceInterface(name = "DocumentIntelligence")
@@ -518,9 +517,7 @@ Response listClassifiersNextSync(@PathParam(value = "nextLink", enco
 
     /**
      * Builds a custom document analysis model.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -558,9 +555,7 @@ private Mono> buildDocumentModelWithResponseAsync(BinaryData buil
 
     /**
      * Builds a custom document analysis model.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -597,9 +592,7 @@ private Response buildDocumentModelWithResponse(BinaryData buildRequest, R
 
     /**
      * Builds a custom document analysis model.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -634,7 +627,8 @@ public PollerFlux beginBuildDocumentModelAsync(BinaryDat
             () -> this.buildDocumentModelWithResponseAsync(buildRequest, requestOptions),
             new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
@@ -642,9 +636,7 @@ public PollerFlux beginBuildDocumentModelAsync(BinaryDat
 
     /**
      * Builds a custom document analysis model.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -679,7 +671,8 @@ public SyncPoller beginBuildDocumentModel(BinaryData bui
             () -> this.buildDocumentModelWithResponse(buildRequest, requestOptions),
             new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
@@ -687,9 +680,7 @@ public SyncPoller beginBuildDocumentModel(BinaryData bui
 
     /**
      * Builds a custom document analysis model.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -724,7 +715,8 @@ public SyncPoller beginBuildDocumentModel(BinaryData bui
             () -> this.buildDocumentModelWithResponseAsync(buildRequest, requestOptions),
             new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(DocumentModelBuildOperationDetails.class),
@@ -733,9 +725,7 @@ public SyncPoller beginBuildDocumentModel(BinaryData bui
 
     /**
      * Builds a custom document analysis model.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -770,7 +760,8 @@ public SyncPoller beginBuildDocumentModel(BinaryData bui
             () -> this.buildDocumentModelWithResponse(buildRequest, requestOptions),
             new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(DocumentModelBuildOperationDetails.class),
@@ -779,9 +770,7 @@ public SyncPoller beginBuildDocumentModel(BinaryData bui
 
     /**
      * Creates a new document model from document types of existing document models.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -815,9 +804,7 @@ private Mono> composeModelWithResponseAsync(BinaryData composeReq
 
     /**
      * Creates a new document model from document types of existing document models.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -850,9 +837,7 @@ private Response composeModelWithResponse(BinaryData composeRequest, Reque
 
     /**
      * Creates a new document model from document types of existing document models.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -883,7 +868,8 @@ public PollerFlux beginComposeModelAsync(BinaryData comp
             () -> this.composeModelWithResponseAsync(composeRequest, requestOptions),
             new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
@@ -891,9 +877,7 @@ public PollerFlux beginComposeModelAsync(BinaryData comp
 
     /**
      * Creates a new document model from document types of existing document models.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -924,7 +908,8 @@ public SyncPoller beginComposeModel(BinaryData composeRe
             () -> this.composeModelWithResponse(composeRequest, requestOptions),
             new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
@@ -932,9 +917,7 @@ public SyncPoller beginComposeModel(BinaryData composeRe
 
     /**
      * Creates a new document model from document types of existing document models.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -965,7 +948,8 @@ public SyncPoller beginComposeModel(BinaryData composeRe
             () -> this.composeModelWithResponseAsync(composeRequest, requestOptions),
             new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(DocumentModelComposeOperationDetails.class),
@@ -974,9 +958,7 @@ public SyncPoller beginComposeModel(BinaryData composeRe
 
     /**
      * Creates a new document model from document types of existing document models.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -1007,7 +989,8 @@ public SyncPoller beginComposeModel(BinaryData composeRe
             () -> this.composeModelWithResponse(composeRequest, requestOptions),
             new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(DocumentModelComposeOperationDetails.class),
@@ -1017,9 +1000,7 @@ public SyncPoller beginComposeModel(BinaryData composeRe
     /**
      * Generates authorization to copy a document model to this location with
      * specified modelId and optional description.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -1029,9 +1010,7 @@ public SyncPoller beginComposeModel(BinaryData composeRe
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     targetResourceId: String (Required)
@@ -1063,9 +1042,7 @@ public Mono> authorizeModelCopyWithResponseAsync(BinaryData
     /**
      * Generates authorization to copy a document model to this location with
      * specified modelId and optional description.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -1075,9 +1052,7 @@ public Mono> authorizeModelCopyWithResponseAsync(BinaryData
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     targetResourceId: String (Required)
@@ -1108,9 +1083,7 @@ public Response authorizeModelCopyWithResponse(BinaryData authorizeC
 
     /**
      * Copies document model to the target resource, region, and modelId.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     targetResourceId: String (Required)
@@ -1141,9 +1114,7 @@ private Mono> copyModelToWithResponseAsync(String modelId, Binary
 
     /**
      * Copies document model to the target resource, region, and modelId.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     targetResourceId: String (Required)
@@ -1174,9 +1145,7 @@ private Response copyModelToWithResponse(String modelId, BinaryData copyTo
 
     /**
      * Copies document model to the target resource, region, and modelId.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     targetResourceId: String (Required)
@@ -1204,7 +1173,8 @@ public PollerFlux beginCopyModelToAsync(String modelId,
             () -> this.copyModelToWithResponseAsync(modelId, copyToRequest, requestOptions),
             new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
@@ -1212,9 +1182,7 @@ public PollerFlux beginCopyModelToAsync(String modelId,
 
     /**
      * Copies document model to the target resource, region, and modelId.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     targetResourceId: String (Required)
@@ -1242,7 +1210,8 @@ public SyncPoller beginCopyModelTo(String modelId, Binar
             () -> this.copyModelToWithResponse(modelId, copyToRequest, requestOptions),
             new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
@@ -1250,9 +1219,7 @@ public SyncPoller beginCopyModelTo(String modelId, Binar
 
     /**
      * Copies document model to the target resource, region, and modelId.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     targetResourceId: String (Required)
@@ -1280,7 +1247,8 @@ public SyncPoller beginCopyModelTo(String modelId, Binar
             () -> this.copyModelToWithResponseAsync(modelId, copyToRequest, requestOptions),
             new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(DocumentModelCopyToOperationDetails.class),
@@ -1289,9 +1257,7 @@ public SyncPoller beginCopyModelTo(String modelId, Binar
 
     /**
      * Copies document model to the target resource, region, and modelId.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     targetResourceId: String (Required)
@@ -1319,7 +1285,8 @@ public SyncPoller beginCopyModelTo(String modelId, Binar
             () -> this.copyModelToWithResponse(modelId, copyToRequest, requestOptions),
             new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(DocumentModelCopyToOperationDetails.class),
@@ -1328,9 +1295,7 @@ public SyncPoller beginCopyModelTo(String modelId, Binar
 
     /**
      * Gets detailed document model information.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -1397,9 +1362,7 @@ public Mono> getModelWithResponseAsync(String modelId, Requ
 
     /**
      * Gets detailed document model information.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -1466,9 +1429,7 @@ public Response getModelWithResponse(String modelId, RequestOptions
 
     /**
      * List all document models.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -1523,8 +1484,7 @@ public Response getModelWithResponse(String modelId, RequestOptions
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of DocumentModelDetails items along with {@link PagedResponse} on successful completion
-     * of {@link Mono}.
+     * @return paged collection of DocumentModelDetails items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listModelsSinglePageAsync(RequestOptions requestOptions) {
@@ -1538,9 +1498,7 @@ private Mono> listModelsSinglePageAsync(RequestOptions
 
     /**
      * List all document models.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -1608,9 +1566,7 @@ public PagedFlux listModelsAsync(RequestOptions requestOptions) {
 
     /**
      * List all document models.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -1678,9 +1634,7 @@ private PagedResponse listModelsSinglePage(RequestOptions requestOpt
 
     /**
      * List all document models.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -1784,9 +1738,7 @@ public Response deleteModelWithResponse(String modelId, RequestOptions req
 
     /**
      * Return information about the current resource.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     customDocumentModels (Required): {
@@ -1806,8 +1758,7 @@ public Response deleteModelWithResponse(String modelId, RequestOptions req
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return general information regarding the current resource along with {@link Response} on successful completion
-     * of {@link Mono}.
+     * @return general information regarding the current resource along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getResourceInfoWithResponseAsync(RequestOptions requestOptions) {
@@ -1818,9 +1769,7 @@ public Mono> getResourceInfoWithResponseAsync(RequestOption
 
     /**
      * Return information about the current resource.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     customDocumentModels (Required): {
@@ -1851,11 +1800,10 @@ public Response getResourceInfoWithResponse(RequestOptions requestOp
 
     /**
      * Gets operation info.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(documentModelBuild/documentModelCompose/documentModelCopyTo/documentClassifierBuild) (Optional)
      *     operationId: String (Required)
      *     status: String(notStarted/running/failed/succeeded/completed/canceled) (Required)
      *     percentCompleted: Integer (Optional)
@@ -1899,11 +1847,10 @@ public Mono> getOperationWithResponseAsync(String operation
 
     /**
      * Gets operation info.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(documentModelBuild/documentModelCompose/documentModelCopyTo/documentClassifierBuild) (Optional)
      *     operationId: String (Required)
      *     status: String(notStarted/running/failed/succeeded/completed/canceled) (Required)
      *     percentCompleted: Integer (Optional)
@@ -1947,11 +1894,10 @@ public Response getOperationWithResponse(String operationId, Request
 
     /**
      * Lists all operations.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(documentModelBuild/documentModelCompose/documentModelCopyTo/documentClassifierBuild) (Optional)
      *     operationId: String (Required)
      *     status: String(notStarted/running/failed/succeeded/completed/canceled) (Required)
      *     percentCompleted: Integer (Optional)
@@ -1983,8 +1929,7 @@ public Response getOperationWithResponse(String operationId, Request
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of OperationDetails items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of OperationDetails items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listOperationsSinglePageAsync(RequestOptions requestOptions) {
@@ -1998,11 +1943,10 @@ private Mono> listOperationsSinglePageAsync(RequestOpt
 
     /**
      * Lists all operations.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(documentModelBuild/documentModelCompose/documentModelCopyTo/documentClassifierBuild) (Optional)
      *     operationId: String (Required)
      *     status: String(notStarted/running/failed/succeeded/completed/canceled) (Required)
      *     percentCompleted: Integer (Optional)
@@ -2047,11 +1991,10 @@ public PagedFlux listOperationsAsync(RequestOptions requestOptions)
 
     /**
      * Lists all operations.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(documentModelBuild/documentModelCompose/documentModelCopyTo/documentClassifierBuild) (Optional)
      *     operationId: String (Required)
      *     status: String(notStarted/running/failed/succeeded/completed/canceled) (Required)
      *     percentCompleted: Integer (Optional)
@@ -2096,11 +2039,10 @@ private PagedResponse listOperationsSinglePage(RequestOptions reques
 
     /**
      * Lists all operations.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(documentModelBuild/documentModelCompose/documentModelCopyTo/documentClassifierBuild) (Optional)
      *     operationId: String (Required)
      *     status: String(notStarted/running/failed/succeeded/completed/canceled) (Required)
      *     percentCompleted: Integer (Optional)
@@ -2145,9 +2087,7 @@ public PagedIterable listOperations(RequestOptions requestOptions) {
 
     /**
      * Builds a custom document classifier.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -2187,9 +2127,7 @@ private Mono> buildClassifierWithResponseAsync(BinaryData buildRe
 
     /**
      * Builds a custom document classifier.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -2228,9 +2166,7 @@ private Response buildClassifierWithResponse(BinaryData buildRequest, Requ
 
     /**
      * Builds a custom document classifier.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -2267,7 +2203,8 @@ public PollerFlux beginBuildClassifierAsync(BinaryData b
             () -> this.buildClassifierWithResponseAsync(buildRequest, requestOptions),
             new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
@@ -2275,9 +2212,7 @@ public PollerFlux beginBuildClassifierAsync(BinaryData b
 
     /**
      * Builds a custom document classifier.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -2314,7 +2249,8 @@ public SyncPoller beginBuildClassifier(BinaryData buildR
             () -> this.buildClassifierWithResponse(buildRequest, requestOptions),
             new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
@@ -2322,9 +2258,7 @@ public SyncPoller beginBuildClassifier(BinaryData buildR
 
     /**
      * Builds a custom document classifier.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -2361,7 +2295,8 @@ public SyncPoller beginBuildClassifier(BinaryData buildR
             () -> this.buildClassifierWithResponseAsync(buildRequest, requestOptions),
             new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(DocumentClassifierBuildOperationDetails.class),
@@ -2370,9 +2305,7 @@ public SyncPoller beginBuildClassifier(BinaryData buildR
 
     /**
      * Builds a custom document classifier.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -2409,7 +2342,8 @@ public SyncPoller beginBuildClassifier(BinaryData buildR
             () -> this.buildClassifierWithResponse(buildRequest, requestOptions),
             new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(DocumentClassifierBuildOperationDetails.class),
@@ -2418,9 +2352,7 @@ public SyncPoller beginBuildClassifier(BinaryData buildR
 
     /**
      * Gets detailed document classifier information.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -2458,8 +2390,7 @@ public SyncPoller beginBuildClassifier(BinaryData buildR
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return detailed document classifier information along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return detailed document classifier information along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getClassifierWithResponseAsync(String classifierId,
@@ -2471,9 +2402,7 @@ public Mono> getClassifierWithResponseAsync(String classifi
 
     /**
      * Gets detailed document classifier information.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -2522,9 +2451,7 @@ public Response getClassifierWithResponse(String classifierId, Reque
 
     /**
      * List all document classifiers.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -2561,8 +2488,7 @@ public Response getClassifierWithResponse(String classifierId, Reque
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of DocumentClassifierDetails items along with {@link PagedResponse} on successful
-     * completion of {@link Mono}.
+     * @return paged collection of DocumentClassifierDetails items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listClassifiersSinglePageAsync(RequestOptions requestOptions) {
@@ -2576,9 +2502,7 @@ private Mono> listClassifiersSinglePageAsync(RequestOp
 
     /**
      * List all document classifiers.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -2628,9 +2552,7 @@ public PagedFlux listClassifiersAsync(RequestOptions requestOptions)
 
     /**
      * List all document classifiers.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -2680,9 +2602,7 @@ private PagedResponse listClassifiersSinglePage(RequestOptions reque
 
     /**
      * List all document classifiers.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -2768,9 +2688,7 @@ public Response deleteClassifierWithResponse(String classifierId, RequestO
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -2828,8 +2746,7 @@ public Response deleteClassifierWithResponse(String classifierId, RequestO
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of DocumentModelDetails items along with {@link PagedResponse} on successful completion
-     * of {@link Mono}.
+     * @return paged collection of DocumentModelDetails items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listModelsNextSinglePageAsync(String nextLink,
@@ -2844,9 +2761,7 @@ private Mono> listModelsNextSinglePageAsync(String nex
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     modelId: String (Required)
@@ -2917,11 +2832,10 @@ private PagedResponse listModelsNextSinglePage(String nextLink, Requ
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(documentModelBuild/documentModelCompose/documentModelCopyTo/documentClassifierBuild) (Optional)
      *     operationId: String (Required)
      *     status: String(notStarted/running/failed/succeeded/completed/canceled) (Required)
      *     percentCompleted: Integer (Optional)
@@ -2956,8 +2870,7 @@ private PagedResponse listModelsNextSinglePage(String nextLink, Requ
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of OperationDetails items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of OperationDetails items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listOperationsNextSinglePageAsync(String nextLink,
@@ -2972,11 +2885,10 @@ private Mono> listOperationsNextSinglePageAsync(String
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String(documentModelBuild/documentModelCompose/documentModelCopyTo/documentClassifierBuild) (Optional)
      *     operationId: String (Required)
      *     status: String(notStarted/running/failed/succeeded/completed/canceled) (Required)
      *     percentCompleted: Integer (Optional)
@@ -3024,9 +2936,7 @@ private PagedResponse listOperationsNextSinglePage(String nextLink,
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
@@ -3066,8 +2976,7 @@ private PagedResponse listOperationsNextSinglePage(String nextLink,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of DocumentClassifierDetails items along with {@link PagedResponse} on successful
-     * completion of {@link Mono}.
+     * @return paged collection of DocumentClassifierDetails items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listClassifiersNextSinglePageAsync(String nextLink,
@@ -3082,9 +2991,7 @@ private Mono> listClassifiersNextSinglePageAsync(Strin
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     classifierId: String (Required)
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/implementation/DocumentIntelligenceClientImpl.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/implementation/DocumentIntelligenceClientImpl.java
index bfef914190e7..a4b0c6e225c7 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/implementation/DocumentIntelligenceClientImpl.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/implementation/DocumentIntelligenceClientImpl.java
@@ -151,8 +151,7 @@ public DocumentIntelligenceClientImpl(HttpPipeline httpPipeline, SerializerAdapt
     }
 
     /**
-     * The interface defining all the services for DocumentIntelligenceClient to be used by the proxy service to
-     * perform REST calls.
+     * The interface defining all the services for DocumentIntelligenceClient to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}/documentintelligence")
     @ServiceInterface(name = "DocumentIntelligence")
@@ -204,61 +203,20 @@ Response classifyDocumentSync(@HostParam("endpoint") String endpoint,
 
     /**
      * Analyzes document with document model.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only - * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated - * string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only + * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -290,61 +248,20 @@ private Mono> analyzeDocumentWithResponseAsync(String modelId, Re
 
     /**
      * Analyzes document with document model.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only - * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated - * string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only + * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -376,61 +293,20 @@ private Response analyzeDocumentWithResponse(String modelId, RequestOption
 
     /**
      * Analyzes document with document model.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only - * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated - * string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only + * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -452,7 +328,8 @@ public PollerFlux beginAnalyzeDocumentAsync(String model
             () -> this.analyzeDocumentWithResponseAsync(modelId, requestOptions),
             new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
@@ -460,61 +337,20 @@ public PollerFlux beginAnalyzeDocumentAsync(String model
 
     /**
      * Analyzes document with document model.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only - * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated - * string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only + * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -536,7 +372,8 @@ public SyncPoller beginAnalyzeDocument(String modelId, R
             () -> this.analyzeDocumentWithResponse(modelId, requestOptions),
             new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
@@ -544,61 +381,20 @@ public SyncPoller beginAnalyzeDocument(String modelId, R
 
     /**
      * Analyzes document with document model.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only - * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated - * string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only + * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -621,7 +417,8 @@ public PollerFlux beginAnalyzeDo
             () -> this.analyzeDocumentWithResponseAsync(modelId, requestOptions),
             new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(AnalyzeResultOperation.class),
@@ -630,61 +427,20 @@ public PollerFlux beginAnalyzeDo
 
     /**
      * Analyzes document with document model.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only - * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated - * string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
Query Parameters
NameTypeRequiredDescription
pagesStringNoList of 1-based page numbers to analyze. Ex. "1-3,5,7-9"
localeStringNoLocale hint for text recognition and document analysis. Value may contain only + * the language code (ex. "en", "fr") or BCP 47 language tag (ex. "en-US").
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
featuresList<String>NoList of optional analysis features. In the form of "," separated string.
queryFieldsList<String>NoList of additional fields to extract. Ex. "NumberOfGuests,StoreNumber". In the form of "," separated string.
outputContentFormatStringNoFormat of the analyze result top-level content. Allowed values: "text", "markdown".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -707,7 +463,8 @@ public SyncPoller beginAnalyzeDo
             () -> this.analyzeDocumentWithResponse(modelId, requestOptions),
             new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(AnalyzeResultOperation.class),
@@ -716,35 +473,15 @@ public SyncPoller beginAnalyzeDo
 
     /**
      * Classifies document with document classifier.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -773,35 +510,15 @@ private Mono> classifyDocumentWithResponseAsync(String classifier
 
     /**
      * Classifies document with document classifier.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -829,35 +546,15 @@ private Response classifyDocumentWithResponse(String classifierId, BinaryD
 
     /**
      * Classifies document with document classifier.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -881,7 +578,8 @@ public PollerFlux beginClassifyDocumentAsync(String clas
             () -> this.classifyDocumentWithResponseAsync(classifierId, classifyRequest, requestOptions),
             new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
@@ -889,35 +587,15 @@ public PollerFlux beginClassifyDocumentAsync(String clas
 
     /**
      * Classifies document with document classifier.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -941,7 +619,8 @@ public SyncPoller beginClassifyDocument(String classifie
             () -> this.classifyDocumentWithResponse(classifierId, classifyRequest, requestOptions),
             new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
@@ -949,35 +628,15 @@ public SyncPoller beginClassifyDocument(String classifie
 
     /**
      * Classifies document with document classifier.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -1001,7 +660,8 @@ public PollerFlux beginClassifyD
             () -> this.classifyDocumentWithResponseAsync(classifierId, classifyRequest, requestOptions),
             new DefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(AnalyzeResultOperation.class),
@@ -1010,35 +670,15 @@ public PollerFlux beginClassifyD
 
     /**
      * Classifies document with document classifier.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", - * "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
Query Parameters
NameTypeRequiredDescription
stringIndexTypeStringNoMethod used to compute string offset and length. Allowed values: "textElements", "unicodeCodePoint", "utf16CodeUnit".
splitStringNoDocument splitting mode. Allowed values: "auto", "none", "perPage".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     urlSource: String (Optional)
@@ -1062,7 +702,8 @@ public PollerFlux beginClassifyD
             () -> this.classifyDocumentWithResponse(classifierId, classifyRequest, requestOptions),
             new SyncDefaultPollingStrategy<>(new PollingStrategyOptions(this.getHttpPipeline())
                 .setEndpoint("{endpoint}/documentintelligence".replace("{endpoint}", this.getEndpoint()))
-                .setContext(requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext()
+                .setContext(requestOptions != null && requestOptions.getContext() != null
+                    ? requestOptions.getContext()
                     : Context.NONE)
                 .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(AnalyzeResultOperation.class),
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AddressValue.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AddressValue.java
index 921df332fb6c..9a579c6da077 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AddressValue.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AddressValue.java
@@ -6,74 +6,69 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Address field value.
  */
 @Immutable
-public final class AddressValue {
+public final class AddressValue implements JsonSerializable {
     /*
      * House or building number.
      */
     @Generated
-    @JsonProperty(value = "houseNumber")
     private String houseNumber;
 
     /*
      * Post office box number.
      */
     @Generated
-    @JsonProperty(value = "poBox")
     private String poBox;
 
     /*
      * Street name.
      */
     @Generated
-    @JsonProperty(value = "road")
     private String road;
 
     /*
      * Name of city, town, village, etc.
      */
     @Generated
-    @JsonProperty(value = "city")
     private String city;
 
     /*
      * First-level administrative division.
      */
     @Generated
-    @JsonProperty(value = "state")
     private String state;
 
     /*
      * Postal code used for mail sorting.
      */
     @Generated
-    @JsonProperty(value = "postalCode")
     private String postalCode;
 
     /*
      * Country/region.
      */
     @Generated
-    @JsonProperty(value = "countryRegion")
     private String countryRegion;
 
     /*
      * Street-level address, excluding city, state, countryRegion, and postalCode.
      */
     @Generated
-    @JsonProperty(value = "streetAddress")
     private String streetAddress;
 
     /*
      * Apartment or office number
      */
     @Generated
-    @JsonProperty(value = "unit")
     private String unit;
 
     /*
@@ -81,35 +76,30 @@ public final class AddressValue {
      * of Westminster in London.
      */
     @Generated
-    @JsonProperty(value = "cityDistrict")
     private String cityDistrict;
 
     /*
      * Second-level administrative division used in certain locales.
      */
     @Generated
-    @JsonProperty(value = "stateDistrict")
     private String stateDistrict;
 
     /*
      * Unofficial neighborhood name, like Chinatown.
      */
     @Generated
-    @JsonProperty(value = "suburb")
     private String suburb;
 
     /*
      * Build name, such as World Trade Center.
      */
     @Generated
-    @JsonProperty(value = "house")
     private String house;
 
     /*
      * Floor number, such as 3F.
      */
     @Generated
-    @JsonProperty(value = "level")
     private String level;
 
     /**
@@ -259,4 +249,80 @@ public String getHouse() {
     public String getLevel() {
         return this.level;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("houseNumber", this.houseNumber);
+        jsonWriter.writeStringField("poBox", this.poBox);
+        jsonWriter.writeStringField("road", this.road);
+        jsonWriter.writeStringField("city", this.city);
+        jsonWriter.writeStringField("state", this.state);
+        jsonWriter.writeStringField("postalCode", this.postalCode);
+        jsonWriter.writeStringField("countryRegion", this.countryRegion);
+        jsonWriter.writeStringField("streetAddress", this.streetAddress);
+        jsonWriter.writeStringField("unit", this.unit);
+        jsonWriter.writeStringField("cityDistrict", this.cityDistrict);
+        jsonWriter.writeStringField("stateDistrict", this.stateDistrict);
+        jsonWriter.writeStringField("suburb", this.suburb);
+        jsonWriter.writeStringField("house", this.house);
+        jsonWriter.writeStringField("level", this.level);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AddressValue from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AddressValue if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AddressValue.
+     */
+    @Generated
+    public static AddressValue fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AddressValue deserializedAddressValue = new AddressValue();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("houseNumber".equals(fieldName)) {
+                    deserializedAddressValue.houseNumber = reader.getString();
+                } else if ("poBox".equals(fieldName)) {
+                    deserializedAddressValue.poBox = reader.getString();
+                } else if ("road".equals(fieldName)) {
+                    deserializedAddressValue.road = reader.getString();
+                } else if ("city".equals(fieldName)) {
+                    deserializedAddressValue.city = reader.getString();
+                } else if ("state".equals(fieldName)) {
+                    deserializedAddressValue.state = reader.getString();
+                } else if ("postalCode".equals(fieldName)) {
+                    deserializedAddressValue.postalCode = reader.getString();
+                } else if ("countryRegion".equals(fieldName)) {
+                    deserializedAddressValue.countryRegion = reader.getString();
+                } else if ("streetAddress".equals(fieldName)) {
+                    deserializedAddressValue.streetAddress = reader.getString();
+                } else if ("unit".equals(fieldName)) {
+                    deserializedAddressValue.unit = reader.getString();
+                } else if ("cityDistrict".equals(fieldName)) {
+                    deserializedAddressValue.cityDistrict = reader.getString();
+                } else if ("stateDistrict".equals(fieldName)) {
+                    deserializedAddressValue.stateDistrict = reader.getString();
+                } else if ("suburb".equals(fieldName)) {
+                    deserializedAddressValue.suburb = reader.getString();
+                } else if ("house".equals(fieldName)) {
+                    deserializedAddressValue.house = reader.getString();
+                } else if ("level".equals(fieldName)) {
+                    deserializedAddressValue.level = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAddressValue;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AnalyzeDocumentRequest.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AnalyzeDocumentRequest.java
index efb9d7c197e5..c3adc9e92c25 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AnalyzeDocumentRequest.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AnalyzeDocumentRequest.java
@@ -7,26 +7,28 @@
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.CoreUtils;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Document analysis parameters.
  */
 @Fluent
-public final class AnalyzeDocumentRequest {
+public final class AnalyzeDocumentRequest implements JsonSerializable {
     /*
-     * Document URL to analyze. Either urlSource or base64Source must be specified.
+     * Document URL to analyze.  Either urlSource or base64Source must be specified.
      */
     @Generated
-    @JsonProperty(value = "urlSource")
     private String urlSource;
 
     /*
-     * Base64 encoding of the document to analyze. Either urlSource or base64Source
+     * Base64 encoding of the document to analyze.  Either urlSource or base64Source
      * must be specified.
      */
     @Generated
-    @JsonProperty(value = "base64Source")
     private byte[] base64Source;
 
     /**
@@ -37,7 +39,7 @@ public AnalyzeDocumentRequest() {
     }
 
     /**
-     * Get the urlSource property: Document URL to analyze. Either urlSource or base64Source must be specified.
+     * Get the urlSource property: Document URL to analyze.  Either urlSource or base64Source must be specified.
      * 
      * @return the urlSource value.
      */
@@ -47,7 +49,7 @@ public String getUrlSource() {
     }
 
     /**
-     * Set the urlSource property: Document URL to analyze. Either urlSource or base64Source must be specified.
+     * Set the urlSource property: Document URL to analyze.  Either urlSource or base64Source must be specified.
      * 
      * @param urlSource the urlSource value to set.
      * @return the AnalyzeDocumentRequest object itself.
@@ -59,7 +61,7 @@ public AnalyzeDocumentRequest setUrlSource(String urlSource) {
     }
 
     /**
-     * Get the base64Source property: Base64 encoding of the document to analyze. Either urlSource or base64Source
+     * Get the base64Source property: Base64 encoding of the document to analyze.  Either urlSource or base64Source
      * must be specified.
      * 
      * @return the base64Source value.
@@ -70,7 +72,7 @@ public byte[] getBase64Source() {
     }
 
     /**
-     * Set the base64Source property: Base64 encoding of the document to analyze. Either urlSource or base64Source
+     * Set the base64Source property: Base64 encoding of the document to analyze.  Either urlSource or base64Source
      * must be specified.
      * 
      * @param base64Source the base64Source value to set.
@@ -81,4 +83,44 @@ public AnalyzeDocumentRequest setBase64Source(byte[] base64Source) {
         this.base64Source = CoreUtils.clone(base64Source);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("urlSource", this.urlSource);
+        jsonWriter.writeBinaryField("base64Source", this.base64Source);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AnalyzeDocumentRequest from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AnalyzeDocumentRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AnalyzeDocumentRequest.
+     */
+    @Generated
+    public static AnalyzeDocumentRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AnalyzeDocumentRequest deserializedAnalyzeDocumentRequest = new AnalyzeDocumentRequest();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("urlSource".equals(fieldName)) {
+                    deserializedAnalyzeDocumentRequest.urlSource = reader.getString();
+                } else if ("base64Source".equals(fieldName)) {
+                    deserializedAnalyzeDocumentRequest.base64Source = reader.getBinary();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAnalyzeDocumentRequest;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AnalyzeResult.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AnalyzeResult.java
index 075990bc76e0..2977937a4109 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AnalyzeResult.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AnalyzeResult.java
@@ -6,41 +6,40 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Document analysis result.
  */
 @Immutable
-public final class AnalyzeResult {
+public final class AnalyzeResult implements JsonSerializable {
     /*
      * API version used to produce this result.
      */
     @Generated
-    @JsonProperty(value = "apiVersion")
-    private String apiVersion;
+    private final String apiVersion;
 
     /*
      * Document model ID used to produce this result.
      */
     @Generated
-    @JsonProperty(value = "modelId")
-    private String modelId;
+    private final String modelId;
 
     /*
      * Method used to compute string offset and length.
      */
     @Generated
-    @JsonProperty(value = "stringIndexType")
-    private StringIndexType stringIndexType;
+    private final StringIndexType stringIndexType;
 
     /*
      * Format of the analyze result top-level content.
      */
     @Generated
-    @JsonProperty(value = "contentFormat")
     private ContentFormat contentFormat;
 
     /*
@@ -48,77 +47,66 @@ public final class AnalyzeResult {
      * order.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private String content;
+    private final String content;
 
     /*
      * Analyzed pages.
      */
     @Generated
-    @JsonProperty(value = "pages")
-    private List pages;
+    private final List pages;
 
     /*
      * Extracted paragraphs.
      */
     @Generated
-    @JsonProperty(value = "paragraphs")
     private List paragraphs;
 
     /*
      * Extracted tables.
      */
     @Generated
-    @JsonProperty(value = "tables")
     private List tables;
 
     /*
      * Extracted figures.
      */
     @Generated
-    @JsonProperty(value = "figures")
     private List figures;
 
     /*
      * Extracted lists.
      */
     @Generated
-    @JsonProperty(value = "lists")
     private List lists;
 
     /*
      * Extracted sections.
      */
     @Generated
-    @JsonProperty(value = "sections")
     private List sections;
 
     /*
      * Extracted key-value pairs.
      */
     @Generated
-    @JsonProperty(value = "keyValuePairs")
     private List keyValuePairs;
 
     /*
      * Extracted font styles.
      */
     @Generated
-    @JsonProperty(value = "styles")
     private List styles;
 
     /*
      * Detected languages.
      */
     @Generated
-    @JsonProperty(value = "languages")
     private List languages;
 
     /*
      * Extracted documents.
      */
     @Generated
-    @JsonProperty(value = "documents")
     private List documents;
 
     /**
@@ -131,11 +119,8 @@ public final class AnalyzeResult {
      * @param pages the pages value to set.
      */
     @Generated
-    @JsonCreator
-    private AnalyzeResult(@JsonProperty(value = "apiVersion") String apiVersion,
-        @JsonProperty(value = "modelId") String modelId,
-        @JsonProperty(value = "stringIndexType") StringIndexType stringIndexType,
-        @JsonProperty(value = "content") String content, @JsonProperty(value = "pages") List pages) {
+    private AnalyzeResult(String apiVersion, String modelId, StringIndexType stringIndexType, String content,
+        List pages) {
         this.apiVersion = apiVersion;
         this.modelId = modelId;
         this.stringIndexType = stringIndexType;
@@ -293,4 +278,111 @@ public List getLanguages() {
     public List getDocuments() {
         return this.documents;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("apiVersion", this.apiVersion);
+        jsonWriter.writeStringField("modelId", this.modelId);
+        jsonWriter.writeStringField("stringIndexType",
+            this.stringIndexType == null ? null : this.stringIndexType.toString());
+        jsonWriter.writeStringField("content", this.content);
+        jsonWriter.writeArrayField("pages", this.pages, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("contentFormat", this.contentFormat == null ? null : this.contentFormat.toString());
+        jsonWriter.writeArrayField("paragraphs", this.paragraphs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("tables", this.tables, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("figures", this.figures, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("lists", this.lists, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sections", this.sections, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("keyValuePairs", this.keyValuePairs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("styles", this.styles, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("languages", this.languages, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("documents", this.documents, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AnalyzeResult from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AnalyzeResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AnalyzeResult.
+     */
+    @Generated
+    public static AnalyzeResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String apiVersion = null;
+            String modelId = null;
+            StringIndexType stringIndexType = null;
+            String content = null;
+            List pages = null;
+            ContentFormat contentFormat = null;
+            List paragraphs = null;
+            List tables = null;
+            List figures = null;
+            List lists = null;
+            List sections = null;
+            List keyValuePairs = null;
+            List styles = null;
+            List languages = null;
+            List documents = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("apiVersion".equals(fieldName)) {
+                    apiVersion = reader.getString();
+                } else if ("modelId".equals(fieldName)) {
+                    modelId = reader.getString();
+                } else if ("stringIndexType".equals(fieldName)) {
+                    stringIndexType = StringIndexType.fromString(reader.getString());
+                } else if ("content".equals(fieldName)) {
+                    content = reader.getString();
+                } else if ("pages".equals(fieldName)) {
+                    pages = reader.readArray(reader1 -> DocumentPage.fromJson(reader1));
+                } else if ("contentFormat".equals(fieldName)) {
+                    contentFormat = ContentFormat.fromString(reader.getString());
+                } else if ("paragraphs".equals(fieldName)) {
+                    paragraphs = reader.readArray(reader1 -> DocumentParagraph.fromJson(reader1));
+                } else if ("tables".equals(fieldName)) {
+                    tables = reader.readArray(reader1 -> DocumentTable.fromJson(reader1));
+                } else if ("figures".equals(fieldName)) {
+                    figures = reader.readArray(reader1 -> DocumentFigure.fromJson(reader1));
+                } else if ("lists".equals(fieldName)) {
+                    lists = reader.readArray(reader1 -> DocumentList.fromJson(reader1));
+                } else if ("sections".equals(fieldName)) {
+                    sections = reader.readArray(reader1 -> DocumentSection.fromJson(reader1));
+                } else if ("keyValuePairs".equals(fieldName)) {
+                    keyValuePairs = reader.readArray(reader1 -> DocumentKeyValuePair.fromJson(reader1));
+                } else if ("styles".equals(fieldName)) {
+                    styles = reader.readArray(reader1 -> DocumentStyle.fromJson(reader1));
+                } else if ("languages".equals(fieldName)) {
+                    languages = reader.readArray(reader1 -> DocumentLanguage.fromJson(reader1));
+                } else if ("documents".equals(fieldName)) {
+                    documents = reader.readArray(reader1 -> Document.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            AnalyzeResult deserializedAnalyzeResult
+                = new AnalyzeResult(apiVersion, modelId, stringIndexType, content, pages);
+            deserializedAnalyzeResult.contentFormat = contentFormat;
+            deserializedAnalyzeResult.paragraphs = paragraphs;
+            deserializedAnalyzeResult.tables = tables;
+            deserializedAnalyzeResult.figures = figures;
+            deserializedAnalyzeResult.lists = lists;
+            deserializedAnalyzeResult.sections = sections;
+            deserializedAnalyzeResult.keyValuePairs = keyValuePairs;
+            deserializedAnalyzeResult.styles = styles;
+            deserializedAnalyzeResult.languages = languages;
+            deserializedAnalyzeResult.documents = documents;
+
+            return deserializedAnalyzeResult;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AnalyzeResultOperation.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AnalyzeResultOperation.java
index c8f521a54be4..7a1eb2413443 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AnalyzeResultOperation.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AnalyzeResultOperation.java
@@ -6,48 +6,47 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * Status and result of the analyze operation.
  */
 @Immutable
-public final class AnalyzeResultOperation {
+public final class AnalyzeResultOperation implements JsonSerializable {
     /*
-     * Operation status. notStarted, running, succeeded, or failed
+     * Operation status.  notStarted, running, succeeded, or failed
      */
     @Generated
-    @JsonProperty(value = "status")
-    private OperationStatus status;
+    private final OperationStatus status;
 
     /*
      * Date and time (UTC) when the analyze operation was submitted.
      */
     @Generated
-    @JsonProperty(value = "createdDateTime")
-    private OffsetDateTime createdDateTime;
+    private final OffsetDateTime createdDateTime;
 
     /*
      * Date and time (UTC) when the status was last updated.
      */
     @Generated
-    @JsonProperty(value = "lastUpdatedDateTime")
-    private OffsetDateTime lastUpdatedDateTime;
+    private final OffsetDateTime lastUpdatedDateTime;
 
     /*
      * Encountered error during document analysis.
      */
     @Generated
-    @JsonProperty(value = "error")
     private Error error;
 
     /*
      * Document analysis result.
      */
     @Generated
-    @JsonProperty(value = "analyzeResult")
     private AnalyzeResult analyzeResult;
 
     /**
@@ -58,17 +57,15 @@ public final class AnalyzeResultOperation {
      * @param lastUpdatedDateTime the lastUpdatedDateTime value to set.
      */
     @Generated
-    @JsonCreator
-    private AnalyzeResultOperation(@JsonProperty(value = "status") OperationStatus status,
-        @JsonProperty(value = "createdDateTime") OffsetDateTime createdDateTime,
-        @JsonProperty(value = "lastUpdatedDateTime") OffsetDateTime lastUpdatedDateTime) {
+    private AnalyzeResultOperation(OperationStatus status, OffsetDateTime createdDateTime,
+        OffsetDateTime lastUpdatedDateTime) {
         this.status = status;
         this.createdDateTime = createdDateTime;
         this.lastUpdatedDateTime = lastUpdatedDateTime;
     }
 
     /**
-     * Get the status property: Operation status. notStarted, running, succeeded, or failed.
+     * Get the status property: Operation status.  notStarted, running, succeeded, or failed.
      * 
      * @return the status value.
      */
@@ -116,4 +113,68 @@ public Error getError() {
     public AnalyzeResult getAnalyzeResult() {
         return this.analyzeResult;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        jsonWriter.writeStringField("createdDateTime",
+            this.createdDateTime == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.createdDateTime));
+        jsonWriter.writeStringField("lastUpdatedDateTime",
+            this.lastUpdatedDateTime == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastUpdatedDateTime));
+        jsonWriter.writeJsonField("error", this.error);
+        jsonWriter.writeJsonField("analyzeResult", this.analyzeResult);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AnalyzeResultOperation from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AnalyzeResultOperation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AnalyzeResultOperation.
+     */
+    @Generated
+    public static AnalyzeResultOperation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            OperationStatus status = null;
+            OffsetDateTime createdDateTime = null;
+            OffsetDateTime lastUpdatedDateTime = null;
+            Error error = null;
+            AnalyzeResult analyzeResult = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("status".equals(fieldName)) {
+                    status = OperationStatus.fromString(reader.getString());
+                } else if ("createdDateTime".equals(fieldName)) {
+                    createdDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastUpdatedDateTime".equals(fieldName)) {
+                    lastUpdatedDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("error".equals(fieldName)) {
+                    error = Error.fromJson(reader);
+                } else if ("analyzeResult".equals(fieldName)) {
+                    analyzeResult = AnalyzeResult.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            AnalyzeResultOperation deserializedAnalyzeResultOperation
+                = new AnalyzeResultOperation(status, createdDateTime, lastUpdatedDateTime);
+            deserializedAnalyzeResultOperation.error = error;
+            deserializedAnalyzeResultOperation.analyzeResult = analyzeResult;
+
+            return deserializedAnalyzeResultOperation;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AuthorizeCopyRequest.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AuthorizeCopyRequest.java
index b5024a0ba84b..57e246917526 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AuthorizeCopyRequest.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AuthorizeCopyRequest.java
@@ -6,34 +6,34 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * Request body to authorize document model copy.
  */
 @Fluent
-public final class AuthorizeCopyRequest {
+public final class AuthorizeCopyRequest implements JsonSerializable {
     /*
      * Unique document model name.
      */
     @Generated
-    @JsonProperty(value = "modelId")
-    private String modelId;
+    private final String modelId;
 
     /*
      * Document model description.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * List of key-value tag attributes associated with the document model.
      */
     @Generated
-    @JsonProperty(value = "tags")
     private Map tags;
 
     /**
@@ -42,8 +42,7 @@ public final class AuthorizeCopyRequest {
      * @param modelId the modelId value to set.
      */
     @Generated
-    @JsonCreator
-    public AuthorizeCopyRequest(@JsonProperty(value = "modelId") String modelId) {
+    public AuthorizeCopyRequest(String modelId) {
         this.modelId = modelId;
     }
 
@@ -100,4 +99,53 @@ public AuthorizeCopyRequest setTags(Map tags) {
         this.tags = tags;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("modelId", this.modelId);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AuthorizeCopyRequest from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AuthorizeCopyRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AuthorizeCopyRequest.
+     */
+    @Generated
+    public static AuthorizeCopyRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String modelId = null;
+            String description = null;
+            Map tags = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("modelId".equals(fieldName)) {
+                    modelId = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("tags".equals(fieldName)) {
+                    tags = reader.readMap(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            AuthorizeCopyRequest deserializedAuthorizeCopyRequest = new AuthorizeCopyRequest(modelId);
+            deserializedAuthorizeCopyRequest.description = description;
+            deserializedAuthorizeCopyRequest.tags = tags;
+
+            return deserializedAuthorizeCopyRequest;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AzureBlobContentSource.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AzureBlobContentSource.java
index 750eaa3617dd..1a95eb0faae1 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AzureBlobContentSource.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AzureBlobContentSource.java
@@ -6,26 +6,27 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Azure Blob Storage content.
  */
 @Fluent
-public final class AzureBlobContentSource {
+public final class AzureBlobContentSource implements JsonSerializable {
     /*
      * Azure Blob Storage container URL.
      */
     @Generated
-    @JsonProperty(value = "containerUrl")
-    private String containerUrl;
+    private final String containerUrl;
 
     /*
      * Blob name prefix.
      */
     @Generated
-    @JsonProperty(value = "prefix")
     private String prefix;
 
     /**
@@ -34,8 +35,7 @@ public final class AzureBlobContentSource {
      * @param containerUrl the containerUrl value to set.
      */
     @Generated
-    @JsonCreator
-    public AzureBlobContentSource(@JsonProperty(value = "containerUrl") String containerUrl) {
+    public AzureBlobContentSource(String containerUrl) {
         this.containerUrl = containerUrl;
     }
 
@@ -70,4 +70,48 @@ public AzureBlobContentSource setPrefix(String prefix) {
         this.prefix = prefix;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("containerUrl", this.containerUrl);
+        jsonWriter.writeStringField("prefix", this.prefix);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AzureBlobContentSource from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AzureBlobContentSource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AzureBlobContentSource.
+     */
+    @Generated
+    public static AzureBlobContentSource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String containerUrl = null;
+            String prefix = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("containerUrl".equals(fieldName)) {
+                    containerUrl = reader.getString();
+                } else if ("prefix".equals(fieldName)) {
+                    prefix = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            AzureBlobContentSource deserializedAzureBlobContentSource = new AzureBlobContentSource(containerUrl);
+            deserializedAzureBlobContentSource.prefix = prefix;
+
+            return deserializedAzureBlobContentSource;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AzureBlobFileListContentSource.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AzureBlobFileListContentSource.java
index 025d0de4c960..91418b915857 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AzureBlobFileListContentSource.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/AzureBlobFileListContentSource.java
@@ -6,27 +6,28 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * File list in Azure Blob Storage.
  */
 @Immutable
-public final class AzureBlobFileListContentSource {
+public final class AzureBlobFileListContentSource implements JsonSerializable {
     /*
      * Azure Blob Storage container URL.
      */
     @Generated
-    @JsonProperty(value = "containerUrl")
-    private String containerUrl;
+    private final String containerUrl;
 
     /*
      * Path to a JSONL file within the container specifying a subset of documents.
      */
     @Generated
-    @JsonProperty(value = "fileList")
-    private String fileList;
+    private final String fileList;
 
     /**
      * Creates an instance of AzureBlobFileListContentSource class.
@@ -35,9 +36,7 @@ public final class AzureBlobFileListContentSource {
      * @param fileList the fileList value to set.
      */
     @Generated
-    @JsonCreator
-    public AzureBlobFileListContentSource(@JsonProperty(value = "containerUrl") String containerUrl,
-        @JsonProperty(value = "fileList") String fileList) {
+    public AzureBlobFileListContentSource(String containerUrl, String fileList) {
         this.containerUrl = containerUrl;
         this.fileList = fileList;
     }
@@ -61,4 +60,45 @@ public String getContainerUrl() {
     public String getFileList() {
         return this.fileList;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("containerUrl", this.containerUrl);
+        jsonWriter.writeStringField("fileList", this.fileList);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AzureBlobFileListContentSource from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AzureBlobFileListContentSource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AzureBlobFileListContentSource.
+     */
+    @Generated
+    public static AzureBlobFileListContentSource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String containerUrl = null;
+            String fileList = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("containerUrl".equals(fieldName)) {
+                    containerUrl = reader.getString();
+                } else if ("fileList".equals(fieldName)) {
+                    fileList = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new AzureBlobFileListContentSource(containerUrl, fileList);
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/BoundingRegion.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/BoundingRegion.java
index 6fc6b1b8911c..e2d6dabb4682 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/BoundingRegion.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/BoundingRegion.java
@@ -6,21 +6,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Bounding polygon on a specific page of the input.
  */
 @Immutable
-public final class BoundingRegion {
+public final class BoundingRegion implements JsonSerializable {
     /*
      * 1-based page number of page containing the bounding region.
      */
     @Generated
-    @JsonProperty(value = "pageNumber")
-    private int pageNumber;
+    private final int pageNumber;
 
     /*
      * Bounding polygon on the page, or the entire page if not specified.
@@ -29,8 +31,7 @@ public final class BoundingRegion {
      * (-180 degrees inclusive) relative to the element orientation.
      */
     @Generated
-    @JsonProperty(value = "polygon")
-    private List polygon;
+    private final List polygon;
 
     /**
      * Creates an instance of BoundingRegion class.
@@ -39,9 +40,7 @@ public final class BoundingRegion {
      * @param polygon the polygon value to set.
      */
     @Generated
-    @JsonCreator
-    private BoundingRegion(@JsonProperty(value = "pageNumber") int pageNumber,
-        @JsonProperty(value = "polygon") List polygon) {
+    private BoundingRegion(int pageNumber, List polygon) {
         this.pageNumber = pageNumber;
         this.polygon = polygon;
     }
@@ -68,4 +67,45 @@ public int getPageNumber() {
     public List getPolygon() {
         return this.polygon;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeIntField("pageNumber", this.pageNumber);
+        jsonWriter.writeArrayField("polygon", this.polygon, (writer, element) -> writer.writeDouble(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of BoundingRegion from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of BoundingRegion if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the BoundingRegion.
+     */
+    @Generated
+    public static BoundingRegion fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            int pageNumber = 0;
+            List polygon = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("pageNumber".equals(fieldName)) {
+                    pageNumber = reader.getInt();
+                } else if ("polygon".equals(fieldName)) {
+                    polygon = reader.readArray(reader1 -> reader1.getDouble());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new BoundingRegion(pageNumber, polygon);
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/BuildDocumentClassifierRequest.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/BuildDocumentClassifierRequest.java
index 8e5b556597b4..458b11ebef05 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/BuildDocumentClassifierRequest.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/BuildDocumentClassifierRequest.java
@@ -6,42 +6,41 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * Request body to build a new custom document classifier.
  */
 @Fluent
-public final class BuildDocumentClassifierRequest {
+public final class BuildDocumentClassifierRequest implements JsonSerializable {
     /*
      * Unique document classifier name.
      */
     @Generated
-    @JsonProperty(value = "classifierId")
-    private String classifierId;
+    private final String classifierId;
 
     /*
      * Document classifier description.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * Base classifierId on top of which to train the classifier.
      */
     @Generated
-    @JsonProperty(value = "baseClassifierId")
     private String baseClassifierId;
 
     /*
      * List of document types to classify against.
      */
     @Generated
-    @JsonProperty(value = "docTypes")
-    private Map docTypes;
+    private final Map docTypes;
 
     /**
      * Creates an instance of BuildDocumentClassifierRequest class.
@@ -50,9 +49,7 @@ public final class BuildDocumentClassifierRequest {
      * @param docTypes the docTypes value to set.
      */
     @Generated
-    @JsonCreator
-    public BuildDocumentClassifierRequest(@JsonProperty(value = "classifierId") String classifierId,
-        @JsonProperty(value = "docTypes") Map docTypes) {
+    public BuildDocumentClassifierRequest(String classifierId, Map docTypes) {
         this.classifierId = classifierId;
         this.docTypes = docTypes;
     }
@@ -120,4 +117,58 @@ public BuildDocumentClassifierRequest setBaseClassifierId(String baseClassifierI
     public Map getDocTypes() {
         return this.docTypes;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("classifierId", this.classifierId);
+        jsonWriter.writeMapField("docTypes", this.docTypes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("baseClassifierId", this.baseClassifierId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of BuildDocumentClassifierRequest from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of BuildDocumentClassifierRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the BuildDocumentClassifierRequest.
+     */
+    @Generated
+    public static BuildDocumentClassifierRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String classifierId = null;
+            Map docTypes = null;
+            String description = null;
+            String baseClassifierId = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("classifierId".equals(fieldName)) {
+                    classifierId = reader.getString();
+                } else if ("docTypes".equals(fieldName)) {
+                    docTypes = reader.readMap(reader1 -> ClassifierDocumentTypeDetails.fromJson(reader1));
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("baseClassifierId".equals(fieldName)) {
+                    baseClassifierId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            BuildDocumentClassifierRequest deserializedBuildDocumentClassifierRequest
+                = new BuildDocumentClassifierRequest(classifierId, docTypes);
+            deserializedBuildDocumentClassifierRequest.description = description;
+            deserializedBuildDocumentClassifierRequest.baseClassifierId = baseClassifierId;
+
+            return deserializedBuildDocumentClassifierRequest;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/BuildDocumentModelRequest.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/BuildDocumentModelRequest.java
index 9de10dd1e9e1..e65e2800a824 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/BuildDocumentModelRequest.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/BuildDocumentModelRequest.java
@@ -6,57 +6,54 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * Request body to build a new custom document model.
  */
 @Fluent
-public final class BuildDocumentModelRequest {
+public final class BuildDocumentModelRequest implements JsonSerializable {
     /*
      * Unique document model name.
      */
     @Generated
-    @JsonProperty(value = "modelId")
-    private String modelId;
+    private final String modelId;
 
     /*
      * Document model description.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * Custom document model build mode.
      */
     @Generated
-    @JsonProperty(value = "buildMode")
-    private DocumentBuildMode buildMode;
+    private final DocumentBuildMode buildMode;
 
     /*
-     * Azure Blob Storage location containing the training data. Either
+     * Azure Blob Storage location containing the training data.  Either
      * azureBlobSource or azureBlobFileListSource must be specified.
      */
     @Generated
-    @JsonProperty(value = "azureBlobSource")
     private AzureBlobContentSource azureBlobSource;
 
     /*
-     * Azure Blob Storage file list specifying the training data. Either
+     * Azure Blob Storage file list specifying the training data.  Either
      * azureBlobSource or azureBlobFileListSource must be specified.
      */
     @Generated
-    @JsonProperty(value = "azureBlobFileListSource")
     private AzureBlobFileListContentSource azureBlobFileListSource;
 
     /*
      * List of key-value tag attributes associated with the document model.
      */
     @Generated
-    @JsonProperty(value = "tags")
     private Map tags;
 
     /**
@@ -66,9 +63,7 @@ public final class BuildDocumentModelRequest {
      * @param buildMode the buildMode value to set.
      */
     @Generated
-    @JsonCreator
-    public BuildDocumentModelRequest(@JsonProperty(value = "modelId") String modelId,
-        @JsonProperty(value = "buildMode") DocumentBuildMode buildMode) {
+    public BuildDocumentModelRequest(String modelId, DocumentBuildMode buildMode) {
         this.modelId = modelId;
         this.buildMode = buildMode;
     }
@@ -116,7 +111,7 @@ public DocumentBuildMode getBuildMode() {
     }
 
     /**
-     * Get the azureBlobSource property: Azure Blob Storage location containing the training data. Either
+     * Get the azureBlobSource property: Azure Blob Storage location containing the training data.  Either
      * azureBlobSource or azureBlobFileListSource must be specified.
      * 
      * @return the azureBlobSource value.
@@ -127,7 +122,7 @@ public AzureBlobContentSource getAzureBlobSource() {
     }
 
     /**
-     * Set the azureBlobSource property: Azure Blob Storage location containing the training data. Either
+     * Set the azureBlobSource property: Azure Blob Storage location containing the training data.  Either
      * azureBlobSource or azureBlobFileListSource must be specified.
      * 
      * @param azureBlobSource the azureBlobSource value to set.
@@ -140,7 +135,7 @@ public BuildDocumentModelRequest setAzureBlobSource(AzureBlobContentSource azure
     }
 
     /**
-     * Get the azureBlobFileListSource property: Azure Blob Storage file list specifying the training data. Either
+     * Get the azureBlobFileListSource property: Azure Blob Storage file list specifying the training data.  Either
      * azureBlobSource or azureBlobFileListSource must be specified.
      * 
      * @return the azureBlobFileListSource value.
@@ -151,7 +146,7 @@ public AzureBlobFileListContentSource getAzureBlobFileListSource() {
     }
 
     /**
-     * Set the azureBlobFileListSource property: Azure Blob Storage file list specifying the training data. Either
+     * Set the azureBlobFileListSource property: Azure Blob Storage file list specifying the training data.  Either
      * azureBlobSource or azureBlobFileListSource must be specified.
      * 
      * @param azureBlobFileListSource the azureBlobFileListSource value to set.
@@ -185,4 +180,68 @@ public BuildDocumentModelRequest setTags(Map tags) {
         this.tags = tags;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("modelId", this.modelId);
+        jsonWriter.writeStringField("buildMode", this.buildMode == null ? null : this.buildMode.toString());
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeJsonField("azureBlobSource", this.azureBlobSource);
+        jsonWriter.writeJsonField("azureBlobFileListSource", this.azureBlobFileListSource);
+        jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of BuildDocumentModelRequest from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of BuildDocumentModelRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the BuildDocumentModelRequest.
+     */
+    @Generated
+    public static BuildDocumentModelRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String modelId = null;
+            DocumentBuildMode buildMode = null;
+            String description = null;
+            AzureBlobContentSource azureBlobSource = null;
+            AzureBlobFileListContentSource azureBlobFileListSource = null;
+            Map tags = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("modelId".equals(fieldName)) {
+                    modelId = reader.getString();
+                } else if ("buildMode".equals(fieldName)) {
+                    buildMode = DocumentBuildMode.fromString(reader.getString());
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("azureBlobSource".equals(fieldName)) {
+                    azureBlobSource = AzureBlobContentSource.fromJson(reader);
+                } else if ("azureBlobFileListSource".equals(fieldName)) {
+                    azureBlobFileListSource = AzureBlobFileListContentSource.fromJson(reader);
+                } else if ("tags".equals(fieldName)) {
+                    tags = reader.readMap(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            BuildDocumentModelRequest deserializedBuildDocumentModelRequest
+                = new BuildDocumentModelRequest(modelId, buildMode);
+            deserializedBuildDocumentModelRequest.description = description;
+            deserializedBuildDocumentModelRequest.azureBlobSource = azureBlobSource;
+            deserializedBuildDocumentModelRequest.azureBlobFileListSource = azureBlobFileListSource;
+            deserializedBuildDocumentModelRequest.tags = tags;
+
+            return deserializedBuildDocumentModelRequest;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ClassifierDocumentTypeDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ClassifierDocumentTypeDetails.java
index 8bc88fabe800..0bfa3c4463e7 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ClassifierDocumentTypeDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ClassifierDocumentTypeDetails.java
@@ -6,36 +6,37 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Classifier document type info.
  */
 @Fluent
-public final class ClassifierDocumentTypeDetails {
+public final class ClassifierDocumentTypeDetails implements JsonSerializable {
     /*
      * Type of training data source.
      */
     @Generated
-    @JsonProperty(value = "sourceKind")
     private ContentSourceKind sourceKind;
 
     /*
      * Azure Blob Storage location containing the training data for a classifier
-     * document type. Either azureBlobSource or azureBlobFileListSource must be
+     * document type.  Either azureBlobSource or azureBlobFileListSource must be
      * specified.
      */
     @Generated
-    @JsonProperty(value = "azureBlobSource")
     private AzureBlobContentSource azureBlobSource;
 
     /*
      * Azure Blob Storage file list specifying the training data for a classifier
-     * document type. Either azureBlobSource or azureBlobFileListSource must be
+     * document type.  Either azureBlobSource or azureBlobFileListSource must be
      * specified.
      */
     @Generated
-    @JsonProperty(value = "azureBlobFileListSource")
     private AzureBlobFileListContentSource azureBlobFileListSource;
 
     /**
@@ -69,7 +70,7 @@ public ClassifierDocumentTypeDetails setSourceKind(ContentSourceKind sourceKind)
 
     /**
      * Get the azureBlobSource property: Azure Blob Storage location containing the training data for a classifier
-     * document type. Either azureBlobSource or azureBlobFileListSource must be
+     * document type.  Either azureBlobSource or azureBlobFileListSource must be
      * specified.
      * 
      * @return the azureBlobSource value.
@@ -81,7 +82,7 @@ public AzureBlobContentSource getAzureBlobSource() {
 
     /**
      * Set the azureBlobSource property: Azure Blob Storage location containing the training data for a classifier
-     * document type. Either azureBlobSource or azureBlobFileListSource must be
+     * document type.  Either azureBlobSource or azureBlobFileListSource must be
      * specified.
      * 
      * @param azureBlobSource the azureBlobSource value to set.
@@ -94,9 +95,8 @@ public ClassifierDocumentTypeDetails setAzureBlobSource(AzureBlobContentSource a
     }
 
     /**
-     * Get the azureBlobFileListSource property: Azure Blob Storage file list specifying the training data for a
-     * classifier
-     * document type. Either azureBlobSource or azureBlobFileListSource must be
+     * Get the azureBlobFileListSource property: Azure Blob Storage file list specifying the training data for a classifier
+     * document type.  Either azureBlobSource or azureBlobFileListSource must be
      * specified.
      * 
      * @return the azureBlobFileListSource value.
@@ -107,9 +107,8 @@ public AzureBlobFileListContentSource getAzureBlobFileListSource() {
     }
 
     /**
-     * Set the azureBlobFileListSource property: Azure Blob Storage file list specifying the training data for a
-     * classifier
-     * document type. Either azureBlobSource or azureBlobFileListSource must be
+     * Set the azureBlobFileListSource property: Azure Blob Storage file list specifying the training data for a classifier
+     * document type.  Either azureBlobSource or azureBlobFileListSource must be
      * specified.
      * 
      * @param azureBlobFileListSource the azureBlobFileListSource value to set.
@@ -121,4 +120,50 @@ public AzureBlobFileListContentSource getAzureBlobFileListSource() {
         this.azureBlobFileListSource = azureBlobFileListSource;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("sourceKind", this.sourceKind == null ? null : this.sourceKind.toString());
+        jsonWriter.writeJsonField("azureBlobSource", this.azureBlobSource);
+        jsonWriter.writeJsonField("azureBlobFileListSource", this.azureBlobFileListSource);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ClassifierDocumentTypeDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ClassifierDocumentTypeDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ClassifierDocumentTypeDetails.
+     */
+    @Generated
+    public static ClassifierDocumentTypeDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ClassifierDocumentTypeDetails deserializedClassifierDocumentTypeDetails
+                = new ClassifierDocumentTypeDetails();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("sourceKind".equals(fieldName)) {
+                    deserializedClassifierDocumentTypeDetails.sourceKind
+                        = ContentSourceKind.fromString(reader.getString());
+                } else if ("azureBlobSource".equals(fieldName)) {
+                    deserializedClassifierDocumentTypeDetails.azureBlobSource = AzureBlobContentSource.fromJson(reader);
+                } else if ("azureBlobFileListSource".equals(fieldName)) {
+                    deserializedClassifierDocumentTypeDetails.azureBlobFileListSource
+                        = AzureBlobFileListContentSource.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedClassifierDocumentTypeDetails;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ClassifyDocumentRequest.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ClassifyDocumentRequest.java
index 520c6249e741..43624c1283bc 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ClassifyDocumentRequest.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ClassifyDocumentRequest.java
@@ -7,26 +7,28 @@
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.CoreUtils;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Document classification parameters.
  */
 @Fluent
-public final class ClassifyDocumentRequest {
+public final class ClassifyDocumentRequest implements JsonSerializable {
     /*
-     * Document URL to classify. Either urlSource or base64Source must be specified.
+     * Document URL to classify.  Either urlSource or base64Source must be specified.
      */
     @Generated
-    @JsonProperty(value = "urlSource")
     private String urlSource;
 
     /*
-     * Base64 encoding of the document to classify. Either urlSource or base64Source
+     * Base64 encoding of the document to classify.  Either urlSource or base64Source
      * must be specified.
      */
     @Generated
-    @JsonProperty(value = "base64Source")
     private byte[] base64Source;
 
     /**
@@ -37,7 +39,7 @@ public ClassifyDocumentRequest() {
     }
 
     /**
-     * Get the urlSource property: Document URL to classify. Either urlSource or base64Source must be specified.
+     * Get the urlSource property: Document URL to classify.  Either urlSource or base64Source must be specified.
      * 
      * @return the urlSource value.
      */
@@ -47,7 +49,7 @@ public String getUrlSource() {
     }
 
     /**
-     * Set the urlSource property: Document URL to classify. Either urlSource or base64Source must be specified.
+     * Set the urlSource property: Document URL to classify.  Either urlSource or base64Source must be specified.
      * 
      * @param urlSource the urlSource value to set.
      * @return the ClassifyDocumentRequest object itself.
@@ -59,7 +61,7 @@ public ClassifyDocumentRequest setUrlSource(String urlSource) {
     }
 
     /**
-     * Get the base64Source property: Base64 encoding of the document to classify. Either urlSource or base64Source
+     * Get the base64Source property: Base64 encoding of the document to classify.  Either urlSource or base64Source
      * must be specified.
      * 
      * @return the base64Source value.
@@ -70,7 +72,7 @@ public byte[] getBase64Source() {
     }
 
     /**
-     * Set the base64Source property: Base64 encoding of the document to classify. Either urlSource or base64Source
+     * Set the base64Source property: Base64 encoding of the document to classify.  Either urlSource or base64Source
      * must be specified.
      * 
      * @param base64Source the base64Source value to set.
@@ -81,4 +83,44 @@ public ClassifyDocumentRequest setBase64Source(byte[] base64Source) {
         this.base64Source = CoreUtils.clone(base64Source);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("urlSource", this.urlSource);
+        jsonWriter.writeBinaryField("base64Source", this.base64Source);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ClassifyDocumentRequest from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ClassifyDocumentRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ClassifyDocumentRequest.
+     */
+    @Generated
+    public static ClassifyDocumentRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ClassifyDocumentRequest deserializedClassifyDocumentRequest = new ClassifyDocumentRequest();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("urlSource".equals(fieldName)) {
+                    deserializedClassifyDocumentRequest.urlSource = reader.getString();
+                } else if ("base64Source".equals(fieldName)) {
+                    deserializedClassifyDocumentRequest.base64Source = reader.getBinary();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedClassifyDocumentRequest;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ComponentDocumentModelDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ComponentDocumentModelDetails.java
index ec2206fd26fe..8098035b25d2 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ComponentDocumentModelDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ComponentDocumentModelDetails.java
@@ -6,20 +6,22 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * A component of a composed document model.
  */
 @Immutable
-public final class ComponentDocumentModelDetails {
+public final class ComponentDocumentModelDetails implements JsonSerializable {
     /*
      * Unique document model name.
      */
     @Generated
-    @JsonProperty(value = "modelId")
-    private String modelId;
+    private final String modelId;
 
     /**
      * Creates an instance of ComponentDocumentModelDetails class.
@@ -27,8 +29,7 @@ public final class ComponentDocumentModelDetails {
      * @param modelId the modelId value to set.
      */
     @Generated
-    @JsonCreator
-    public ComponentDocumentModelDetails(@JsonProperty(value = "modelId") String modelId) {
+    public ComponentDocumentModelDetails(String modelId) {
         this.modelId = modelId;
     }
 
@@ -41,4 +42,41 @@ public ComponentDocumentModelDetails(@JsonProperty(value = "modelId") String mod
     public String getModelId() {
         return this.modelId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("modelId", this.modelId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ComponentDocumentModelDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ComponentDocumentModelDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ComponentDocumentModelDetails.
+     */
+    @Generated
+    public static ComponentDocumentModelDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String modelId = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("modelId".equals(fieldName)) {
+                    modelId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new ComponentDocumentModelDetails(modelId);
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ComposeDocumentModelRequest.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ComposeDocumentModelRequest.java
index c9918f491f5b..e8d851f28cba 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ComposeDocumentModelRequest.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ComposeDocumentModelRequest.java
@@ -6,8 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -15,33 +18,29 @@
  * Request body to create a composed document model from component document models.
  */
 @Fluent
-public final class ComposeDocumentModelRequest {
+public final class ComposeDocumentModelRequest implements JsonSerializable {
     /*
      * Unique document model name.
      */
     @Generated
-    @JsonProperty(value = "modelId")
-    private String modelId;
+    private final String modelId;
 
     /*
      * Document model description.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * List of component document models to compose.
      */
     @Generated
-    @JsonProperty(value = "componentModels")
-    private List componentModels;
+    private final List componentModels;
 
     /*
      * List of key-value tag attributes associated with the document model.
      */
     @Generated
-    @JsonProperty(value = "tags")
     private Map tags;
 
     /**
@@ -51,9 +50,7 @@ public final class ComposeDocumentModelRequest {
      * @param componentModels the componentModels value to set.
      */
     @Generated
-    @JsonCreator
-    public ComposeDocumentModelRequest(@JsonProperty(value = "modelId") String modelId,
-        @JsonProperty(value = "componentModels") List componentModels) {
+    public ComposeDocumentModelRequest(String modelId, List componentModels) {
         this.modelId = modelId;
         this.componentModels = componentModels;
     }
@@ -121,4 +118,59 @@ public ComposeDocumentModelRequest setTags(Map tags) {
         this.tags = tags;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("modelId", this.modelId);
+        jsonWriter.writeArrayField("componentModels", this.componentModels,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ComposeDocumentModelRequest from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ComposeDocumentModelRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ComposeDocumentModelRequest.
+     */
+    @Generated
+    public static ComposeDocumentModelRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String modelId = null;
+            List componentModels = null;
+            String description = null;
+            Map tags = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("modelId".equals(fieldName)) {
+                    modelId = reader.getString();
+                } else if ("componentModels".equals(fieldName)) {
+                    componentModels = reader.readArray(reader1 -> ComponentDocumentModelDetails.fromJson(reader1));
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("tags".equals(fieldName)) {
+                    tags = reader.readMap(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            ComposeDocumentModelRequest deserializedComposeDocumentModelRequest
+                = new ComposeDocumentModelRequest(modelId, componentModels);
+            deserializedComposeDocumentModelRequest.description = description;
+            deserializedComposeDocumentModelRequest.tags = tags;
+
+            return deserializedComposeDocumentModelRequest;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ContentFormat.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ContentFormat.java
index 76bb1bf15b75..c51762293778 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ContentFormat.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ContentFormat.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -43,7 +42,6 @@ public ContentFormat() {
      * @return the corresponding ContentFormat.
      */
     @Generated
-    @JsonCreator
     public static ContentFormat fromString(String name) {
         return fromString(name, ContentFormat.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ContentSourceKind.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ContentSourceKind.java
index f7859163443b..84c4c3f629d6 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ContentSourceKind.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ContentSourceKind.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -54,7 +53,6 @@ public ContentSourceKind() {
      * @return the corresponding ContentSourceKind.
      */
     @Generated
-    @JsonCreator
     public static ContentSourceKind fromString(String name) {
         return fromString(name, ContentSourceKind.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/CopyAuthorization.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/CopyAuthorization.java
index 2e2c69c5164f..24e011975d22 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/CopyAuthorization.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/CopyAuthorization.java
@@ -6,58 +6,56 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * Authorization to copy a document model to the specified target resource and
  * modelId.
  */
 @Immutable
-public final class CopyAuthorization {
+public final class CopyAuthorization implements JsonSerializable {
     /*
      * ID of the target Azure resource where the document model should be copied to.
      */
     @Generated
-    @JsonProperty(value = "targetResourceId")
-    private String targetResourceId;
+    private final String targetResourceId;
 
     /*
      * Location of the target Azure resource where the document model should be copied
      * to.
      */
     @Generated
-    @JsonProperty(value = "targetResourceRegion")
-    private String targetResourceRegion;
+    private final String targetResourceRegion;
 
     /*
      * Identifier of the target document model.
      */
     @Generated
-    @JsonProperty(value = "targetModelId")
-    private String targetModelId;
+    private final String targetModelId;
 
     /*
      * URL of the copied document model in the target account.
      */
     @Generated
-    @JsonProperty(value = "targetModelLocation")
-    private String targetModelLocation;
+    private final String targetModelLocation;
 
     /*
      * Token used to authorize the request.
      */
     @Generated
-    @JsonProperty(value = "accessToken")
-    private String accessToken;
+    private final String accessToken;
 
     /*
      * Date/time when the access token expires.
      */
     @Generated
-    @JsonProperty(value = "expirationDateTime")
-    private OffsetDateTime expirationDateTime;
+    private final OffsetDateTime expirationDateTime;
 
     /**
      * Creates an instance of CopyAuthorization class.
@@ -70,13 +68,8 @@ public final class CopyAuthorization {
      * @param expirationDateTime the expirationDateTime value to set.
      */
     @Generated
-    @JsonCreator
-    public CopyAuthorization(@JsonProperty(value = "targetResourceId") String targetResourceId,
-        @JsonProperty(value = "targetResourceRegion") String targetResourceRegion,
-        @JsonProperty(value = "targetModelId") String targetModelId,
-        @JsonProperty(value = "targetModelLocation") String targetModelLocation,
-        @JsonProperty(value = "accessToken") String accessToken,
-        @JsonProperty(value = "expirationDateTime") OffsetDateTime expirationDateTime) {
+    public CopyAuthorization(String targetResourceId, String targetResourceRegion, String targetModelId,
+        String targetModelLocation, String accessToken, OffsetDateTime expirationDateTime) {
         this.targetResourceId = targetResourceId;
         this.targetResourceRegion = targetResourceRegion;
         this.targetModelId = targetModelId;
@@ -96,8 +89,7 @@ public String getTargetResourceId() {
     }
 
     /**
-     * Get the targetResourceRegion property: Location of the target Azure resource where the document model should be
-     * copied
+     * Get the targetResourceRegion property: Location of the target Azure resource where the document model should be copied
      * to.
      * 
      * @return the targetResourceRegion value.
@@ -146,4 +138,66 @@ public String getAccessToken() {
     public OffsetDateTime getExpirationDateTime() {
         return this.expirationDateTime;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("targetResourceId", this.targetResourceId);
+        jsonWriter.writeStringField("targetResourceRegion", this.targetResourceRegion);
+        jsonWriter.writeStringField("targetModelId", this.targetModelId);
+        jsonWriter.writeStringField("targetModelLocation", this.targetModelLocation);
+        jsonWriter.writeStringField("accessToken", this.accessToken);
+        jsonWriter.writeStringField("expirationDateTime",
+            this.expirationDateTime == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.expirationDateTime));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CopyAuthorization from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CopyAuthorization if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the CopyAuthorization.
+     */
+    @Generated
+    public static CopyAuthorization fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String targetResourceId = null;
+            String targetResourceRegion = null;
+            String targetModelId = null;
+            String targetModelLocation = null;
+            String accessToken = null;
+            OffsetDateTime expirationDateTime = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("targetResourceId".equals(fieldName)) {
+                    targetResourceId = reader.getString();
+                } else if ("targetResourceRegion".equals(fieldName)) {
+                    targetResourceRegion = reader.getString();
+                } else if ("targetModelId".equals(fieldName)) {
+                    targetModelId = reader.getString();
+                } else if ("targetModelLocation".equals(fieldName)) {
+                    targetModelLocation = reader.getString();
+                } else if ("accessToken".equals(fieldName)) {
+                    accessToken = reader.getString();
+                } else if ("expirationDateTime".equals(fieldName)) {
+                    expirationDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new CopyAuthorization(targetResourceId, targetResourceRegion, targetModelId, targetModelLocation,
+                accessToken, expirationDateTime);
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/CurrencyValue.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/CurrencyValue.java
index 92a3b71b4a82..4b94511bed31 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/CurrencyValue.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/CurrencyValue.java
@@ -6,33 +6,33 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Currency field value.
  */
 @Immutable
-public final class CurrencyValue {
+public final class CurrencyValue implements JsonSerializable {
     /*
      * Currency amount.
      */
     @Generated
-    @JsonProperty(value = "amount")
-    private double amount;
+    private final double amount;
 
     /*
      * Currency symbol label, if any.
      */
     @Generated
-    @JsonProperty(value = "currencySymbol")
     private String currencySymbol;
 
     /*
      * Resolved currency code (ISO 4217), if any.
      */
     @Generated
-    @JsonProperty(value = "currencyCode")
     private String currencyCode;
 
     /**
@@ -41,8 +41,7 @@ public final class CurrencyValue {
      * @param amount the amount value to set.
      */
     @Generated
-    @JsonCreator
-    private CurrencyValue(@JsonProperty(value = "amount") double amount) {
+    private CurrencyValue(double amount) {
         this.amount = amount;
     }
 
@@ -75,4 +74,53 @@ public String getCurrencySymbol() {
     public String getCurrencyCode() {
         return this.currencyCode;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeDoubleField("amount", this.amount);
+        jsonWriter.writeStringField("currencySymbol", this.currencySymbol);
+        jsonWriter.writeStringField("currencyCode", this.currencyCode);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CurrencyValue from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CurrencyValue if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the CurrencyValue.
+     */
+    @Generated
+    public static CurrencyValue fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            double amount = 0.0;
+            String currencySymbol = null;
+            String currencyCode = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("amount".equals(fieldName)) {
+                    amount = reader.getDouble();
+                } else if ("currencySymbol".equals(fieldName)) {
+                    currencySymbol = reader.getString();
+                } else if ("currencyCode".equals(fieldName)) {
+                    currencyCode = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            CurrencyValue deserializedCurrencyValue = new CurrencyValue(amount);
+            deserializedCurrencyValue.currencySymbol = currencySymbol;
+            deserializedCurrencyValue.currencyCode = currencyCode;
+
+            return deserializedCurrencyValue;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/CustomDocumentModelsDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/CustomDocumentModelsDetails.java
index ac14bedfdcd4..dbe8761027df 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/CustomDocumentModelsDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/CustomDocumentModelsDetails.java
@@ -6,27 +6,28 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Details regarding custom document models.
  */
 @Immutable
-public final class CustomDocumentModelsDetails {
+public final class CustomDocumentModelsDetails implements JsonSerializable {
     /*
      * Number of custom document models in the current resource.
      */
     @Generated
-    @JsonProperty(value = "count")
-    private int count;
+    private final int count;
 
     /*
      * Maximum number of custom document models supported in the current resource.
      */
     @Generated
-    @JsonProperty(value = "limit")
-    private int limit;
+    private final int limit;
 
     /**
      * Creates an instance of CustomDocumentModelsDetails class.
@@ -35,9 +36,7 @@ public final class CustomDocumentModelsDetails {
      * @param limit the limit value to set.
      */
     @Generated
-    @JsonCreator
-    private CustomDocumentModelsDetails(@JsonProperty(value = "count") int count,
-        @JsonProperty(value = "limit") int limit) {
+    private CustomDocumentModelsDetails(int count, int limit) {
         this.count = count;
         this.limit = limit;
     }
@@ -61,4 +60,45 @@ public int getCount() {
     public int getLimit() {
         return this.limit;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeIntField("count", this.count);
+        jsonWriter.writeIntField("limit", this.limit);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CustomDocumentModelsDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CustomDocumentModelsDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the CustomDocumentModelsDetails.
+     */
+    @Generated
+    public static CustomDocumentModelsDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            int count = 0;
+            int limit = 0;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("count".equals(fieldName)) {
+                    count = reader.getInt();
+                } else if ("limit".equals(fieldName)) {
+                    limit = reader.getInt();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new CustomDocumentModelsDetails(count, limit);
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/Document.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/Document.java
index 88063850e2b8..4568f75c0d01 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/Document.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/Document.java
@@ -6,8 +6,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -15,41 +18,36 @@
  * An object describing the location and semantic content of a document.
  */
 @Immutable
-public final class Document {
+public final class Document implements JsonSerializable {
     /*
      * Document type.
      */
     @Generated
-    @JsonProperty(value = "docType")
-    private String docType;
+    private final String docType;
 
     /*
      * Bounding regions covering the document.
      */
     @Generated
-    @JsonProperty(value = "boundingRegions")
     private List boundingRegions;
 
     /*
      * Location of the document in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /*
      * Dictionary of named field values.
      */
     @Generated
-    @JsonProperty(value = "fields")
     private Map fields;
 
     /*
      * Confidence of correctly extracting the document.
      */
     @Generated
-    @JsonProperty(value = "confidence")
-    private double confidence;
+    private final double confidence;
 
     /**
      * Creates an instance of Document class.
@@ -59,10 +57,7 @@ public final class Document {
      * @param confidence the confidence value to set.
      */
     @Generated
-    @JsonCreator
-    private Document(@JsonProperty(value = "docType") String docType,
-        @JsonProperty(value = "spans") List spans,
-        @JsonProperty(value = "confidence") double confidence) {
+    private Document(String docType, List spans, double confidence) {
         this.docType = docType;
         this.spans = spans;
         this.confidence = confidence;
@@ -117,4 +112,62 @@ public Map getFields() {
     public double getConfidence() {
         return this.confidence;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("docType", this.docType);
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeDoubleField("confidence", this.confidence);
+        jsonWriter.writeArrayField("boundingRegions", this.boundingRegions,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeMapField("fields", this.fields, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Document from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Document if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the Document.
+     */
+    @Generated
+    public static Document fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String docType = null;
+            List spans = null;
+            double confidence = 0.0;
+            List boundingRegions = null;
+            Map fields = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("docType".equals(fieldName)) {
+                    docType = reader.getString();
+                } else if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("confidence".equals(fieldName)) {
+                    confidence = reader.getDouble();
+                } else if ("boundingRegions".equals(fieldName)) {
+                    boundingRegions = reader.readArray(reader1 -> BoundingRegion.fromJson(reader1));
+                } else if ("fields".equals(fieldName)) {
+                    fields = reader.readMap(reader1 -> DocumentField.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            Document deserializedDocument = new Document(docType, spans, confidence);
+            deserializedDocument.boundingRegions = boundingRegions;
+            deserializedDocument.fields = fields;
+
+            return deserializedDocument;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentAnalysisFeature.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentAnalysisFeature.java
index 1565e8b9978a..66f8d8cefdb4 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentAnalysisFeature.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentAnalysisFeature.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -72,7 +71,6 @@ public DocumentAnalysisFeature() {
      * @return the corresponding DocumentAnalysisFeature.
      */
     @Generated
-    @JsonCreator
     public static DocumentAnalysisFeature fromString(String name) {
         return fromString(name, DocumentAnalysisFeature.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentBarcode.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentBarcode.java
index eb8745bf07b1..aa094487d1cd 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentBarcode.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentBarcode.java
@@ -6,28 +6,29 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * A barcode object.
  */
 @Immutable
-public final class DocumentBarcode {
+public final class DocumentBarcode implements JsonSerializable {
     /*
      * Barcode kind.
      */
     @Generated
-    @JsonProperty(value = "kind")
-    private DocumentBarcodeKind kind;
+    private final DocumentBarcodeKind kind;
 
     /*
      * Barcode value.
      */
     @Generated
-    @JsonProperty(value = "value")
-    private String value;
+    private final String value;
 
     /*
      * Bounding polygon of the barcode, with coordinates specified relative to the
@@ -36,22 +37,19 @@ public final class DocumentBarcode {
      * element orientation.
      */
     @Generated
-    @JsonProperty(value = "polygon")
     private List polygon;
 
     /*
      * Location of the barcode in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "span")
-    private DocumentSpan span;
+    private final DocumentSpan span;
 
     /*
      * Confidence of correctly extracting the barcode.
      */
     @Generated
-    @JsonProperty(value = "confidence")
-    private double confidence;
+    private final double confidence;
 
     /**
      * Creates an instance of DocumentBarcode class.
@@ -62,10 +60,7 @@ public final class DocumentBarcode {
      * @param confidence the confidence value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentBarcode(@JsonProperty(value = "kind") DocumentBarcodeKind kind,
-        @JsonProperty(value = "value") String value, @JsonProperty(value = "span") DocumentSpan span,
-        @JsonProperty(value = "confidence") double confidence) {
+    private DocumentBarcode(DocumentBarcodeKind kind, String value, DocumentSpan span, double confidence) {
         this.kind = kind;
         this.value = value;
         this.span = span;
@@ -124,4 +119,60 @@ public DocumentSpan getSpan() {
     public double getConfidence() {
         return this.confidence;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString());
+        jsonWriter.writeStringField("value", this.value);
+        jsonWriter.writeJsonField("span", this.span);
+        jsonWriter.writeDoubleField("confidence", this.confidence);
+        jsonWriter.writeArrayField("polygon", this.polygon, (writer, element) -> writer.writeDouble(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentBarcode from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentBarcode if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentBarcode.
+     */
+    @Generated
+    public static DocumentBarcode fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DocumentBarcodeKind kind = null;
+            String value = null;
+            DocumentSpan span = null;
+            double confidence = 0.0;
+            List polygon = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("kind".equals(fieldName)) {
+                    kind = DocumentBarcodeKind.fromString(reader.getString());
+                } else if ("value".equals(fieldName)) {
+                    value = reader.getString();
+                } else if ("span".equals(fieldName)) {
+                    span = DocumentSpan.fromJson(reader);
+                } else if ("confidence".equals(fieldName)) {
+                    confidence = reader.getDouble();
+                } else if ("polygon".equals(fieldName)) {
+                    polygon = reader.readArray(reader1 -> reader1.getDouble());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentBarcode deserializedDocumentBarcode = new DocumentBarcode(kind, value, span, confidence);
+            deserializedDocumentBarcode.polygon = polygon;
+
+            return deserializedDocumentBarcode;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentBarcodeKind.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentBarcodeKind.java
index 9c437473904a..ed67c60adb6d 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentBarcodeKind.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentBarcodeKind.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -132,7 +131,6 @@ public DocumentBarcodeKind() {
      * @return the corresponding DocumentBarcodeKind.
      */
     @Generated
-    @JsonCreator
     public static DocumentBarcodeKind fromString(String name) {
         return fromString(name, DocumentBarcodeKind.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentBuildMode.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentBuildMode.java
index 488bb7aa3fd1..c995e575f45a 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentBuildMode.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentBuildMode.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public DocumentBuildMode() {
      * @return the corresponding DocumentBuildMode.
      */
     @Generated
-    @JsonCreator
     public static DocumentBuildMode fromString(String name) {
         return fromString(name, DocumentBuildMode.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentCaption.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentCaption.java
index cb699f2f4732..fb5e1ed92422 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentCaption.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentCaption.java
@@ -6,41 +6,40 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * A caption object describing a table or figure.
  */
 @Immutable
-public final class DocumentCaption {
+public final class DocumentCaption implements JsonSerializable {
     /*
      * Content of the caption.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private String content;
+    private final String content;
 
     /*
      * Bounding regions covering the caption.
      */
     @Generated
-    @JsonProperty(value = "boundingRegions")
     private List boundingRegions;
 
     /*
      * Location of the caption in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /*
      * Child elements of the caption.
      */
     @Generated
-    @JsonProperty(value = "elements")
     private List elements;
 
     /**
@@ -50,9 +49,7 @@ public final class DocumentCaption {
      * @param spans the spans value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentCaption(@JsonProperty(value = "content") String content,
-        @JsonProperty(value = "spans") List spans) {
+    private DocumentCaption(String content, List spans) {
         this.content = content;
         this.spans = spans;
     }
@@ -96,4 +93,58 @@ public List getSpans() {
     public List getElements() {
         return this.elements;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("content", this.content);
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("boundingRegions", this.boundingRegions,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("elements", this.elements, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentCaption from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentCaption if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentCaption.
+     */
+    @Generated
+    public static DocumentCaption fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String content = null;
+            List spans = null;
+            List boundingRegions = null;
+            List elements = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("content".equals(fieldName)) {
+                    content = reader.getString();
+                } else if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("boundingRegions".equals(fieldName)) {
+                    boundingRegions = reader.readArray(reader1 -> BoundingRegion.fromJson(reader1));
+                } else if ("elements".equals(fieldName)) {
+                    elements = reader.readArray(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentCaption deserializedDocumentCaption = new DocumentCaption(content, spans);
+            deserializedDocumentCaption.boundingRegions = boundingRegions;
+            deserializedDocumentCaption.elements = elements;
+
+            return deserializedDocumentCaption;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentClassifierBuildOperationDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentClassifierBuildOperationDetails.java
index 16ed67d90ff6..7977db243715 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentClassifierBuildOperationDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentClassifierBuildOperationDetails.java
@@ -6,24 +6,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Map;
 
 /**
  * Get Operation response object.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("documentClassifierBuild")
 @Immutable
 public final class DocumentClassifierBuildOperationDetails extends OperationDetails {
     /*
      * Operation result upon success.
      */
     @Generated
-    @JsonProperty(value = "result")
     private DocumentClassifierDetails result;
 
     /**
@@ -35,12 +34,10 @@ public final class DocumentClassifierBuildOperationDetails extends OperationDeta
      * @param resourceLocation the resourceLocation value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentClassifierBuildOperationDetails(@JsonProperty(value = "status") OperationStatus status,
-        @JsonProperty(value = "createdDateTime") OffsetDateTime createdDateTime,
-        @JsonProperty(value = "lastUpdatedDateTime") OffsetDateTime lastUpdatedDateTime,
-        @JsonProperty(value = "resourceLocation") String resourceLocation) {
+    private DocumentClassifierBuildOperationDetails(OperationStatus status, OffsetDateTime createdDateTime,
+        OffsetDateTime lastUpdatedDateTime, String resourceLocation) {
         super(status, createdDateTime, lastUpdatedDateTime, resourceLocation);
+        setKind(OperationKind.DOCUMENT_CLASSIFIER_BUILD);
     }
 
     /**
@@ -52,4 +49,97 @@ private DocumentClassifierBuildOperationDetails(@JsonProperty(value = "status")
     public DocumentClassifierDetails getResult() {
         return this.result;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("status", getStatus() == null ? null : getStatus().toString());
+        jsonWriter.writeStringField("createdDateTime",
+            getCreatedDateTime() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getCreatedDateTime()));
+        jsonWriter.writeStringField("lastUpdatedDateTime",
+            getLastUpdatedDateTime() == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getLastUpdatedDateTime()));
+        jsonWriter.writeStringField("resourceLocation", getResourceLocation());
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeNumberField("percentCompleted", getPercentCompleted());
+        jsonWriter.writeStringField("apiVersion", getApiVersion());
+        jsonWriter.writeMapField("tags", getTags(), (writer, element) -> writer.writeString(element));
+        jsonWriter.writeJsonField("error", getError());
+        jsonWriter.writeJsonField("result", this.result);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentClassifierBuildOperationDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentClassifierBuildOperationDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentClassifierBuildOperationDetails.
+     */
+    @Generated
+    public static DocumentClassifierBuildOperationDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String operationId = null;
+            OperationStatus status = null;
+            OffsetDateTime createdDateTime = null;
+            OffsetDateTime lastUpdatedDateTime = null;
+            String resourceLocation = null;
+            OperationKind kind = OperationKind.DOCUMENT_CLASSIFIER_BUILD;
+            Integer percentCompleted = null;
+            String apiVersion = null;
+            Map tags = null;
+            Error error = null;
+            DocumentClassifierDetails result = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("operationId".equals(fieldName)) {
+                    operationId = reader.getString();
+                } else if ("status".equals(fieldName)) {
+                    status = OperationStatus.fromString(reader.getString());
+                } else if ("createdDateTime".equals(fieldName)) {
+                    createdDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastUpdatedDateTime".equals(fieldName)) {
+                    lastUpdatedDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("resourceLocation".equals(fieldName)) {
+                    resourceLocation = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = OperationKind.fromString(reader.getString());
+                } else if ("percentCompleted".equals(fieldName)) {
+                    percentCompleted = reader.getNullable(JsonReader::getInt);
+                } else if ("apiVersion".equals(fieldName)) {
+                    apiVersion = reader.getString();
+                } else if ("tags".equals(fieldName)) {
+                    tags = reader.readMap(reader1 -> reader1.getString());
+                } else if ("error".equals(fieldName)) {
+                    error = Error.fromJson(reader);
+                } else if ("result".equals(fieldName)) {
+                    result = DocumentClassifierDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentClassifierBuildOperationDetails deserializedDocumentClassifierBuildOperationDetails
+                = new DocumentClassifierBuildOperationDetails(status, createdDateTime, lastUpdatedDateTime,
+                    resourceLocation);
+            deserializedDocumentClassifierBuildOperationDetails.setOperationId(operationId);
+            deserializedDocumentClassifierBuildOperationDetails.setKind(kind);
+            deserializedDocumentClassifierBuildOperationDetails.setPercentCompleted(percentCompleted);
+            deserializedDocumentClassifierBuildOperationDetails.setApiVersion(apiVersion);
+            deserializedDocumentClassifierBuildOperationDetails.setTags(tags);
+            deserializedDocumentClassifierBuildOperationDetails.setError(error);
+            deserializedDocumentClassifierBuildOperationDetails.result = result;
+
+            return deserializedDocumentClassifierBuildOperationDetails;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentClassifierDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentClassifierDetails.java
index be95146cbcdf..6a273c83208f 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentClassifierDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentClassifierDetails.java
@@ -6,9 +6,13 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
 
@@ -16,61 +20,53 @@
  * Document classifier info.
  */
 @Immutable
-public final class DocumentClassifierDetails {
+public final class DocumentClassifierDetails implements JsonSerializable {
     /*
      * Unique document classifier name.
      */
     @Generated
-    @JsonProperty(value = "classifierId", access = JsonProperty.Access.WRITE_ONLY)
     private String classifierId;
 
     /*
      * Document classifier description.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * Date and time (UTC) when the document classifier was created.
      */
     @Generated
-    @JsonProperty(value = "createdDateTime")
-    private OffsetDateTime createdDateTime;
+    private final OffsetDateTime createdDateTime;
 
     /*
      * Date and time (UTC) when the document classifier will expire.
      */
     @Generated
-    @JsonProperty(value = "expirationDateTime")
     private OffsetDateTime expirationDateTime;
 
     /*
      * API version used to create this document classifier.
      */
     @Generated
-    @JsonProperty(value = "apiVersion")
-    private String apiVersion;
+    private final String apiVersion;
 
     /*
      * Base classifierId on top of which the classifier was trained.
      */
     @Generated
-    @JsonProperty(value = "baseClassifierId")
     private String baseClassifierId;
 
     /*
      * List of document types to classify against.
      */
     @Generated
-    @JsonProperty(value = "docTypes")
-    private Map docTypes;
+    private final Map docTypes;
 
     /*
      * List of warnings encountered while building the classifier.
      */
     @Generated
-    @JsonProperty(value = "warnings")
     private List warnings;
 
     /**
@@ -81,10 +77,8 @@ public final class DocumentClassifierDetails {
      * @param docTypes the docTypes value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentClassifierDetails(@JsonProperty(value = "createdDateTime") OffsetDateTime createdDateTime,
-        @JsonProperty(value = "apiVersion") String apiVersion,
-        @JsonProperty(value = "docTypes") Map docTypes) {
+    private DocumentClassifierDetails(OffsetDateTime createdDateTime, String apiVersion,
+        Map docTypes) {
         this.createdDateTime = createdDateTime;
         this.apiVersion = apiVersion;
         this.docTypes = docTypes;
@@ -169,4 +163,82 @@ public Map getDocTypes() {
     public List getWarnings() {
         return this.warnings;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("createdDateTime",
+            this.createdDateTime == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.createdDateTime));
+        jsonWriter.writeStringField("apiVersion", this.apiVersion);
+        jsonWriter.writeMapField("docTypes", this.docTypes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("expirationDateTime",
+            this.expirationDateTime == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.expirationDateTime));
+        jsonWriter.writeStringField("baseClassifierId", this.baseClassifierId);
+        jsonWriter.writeArrayField("warnings", this.warnings, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentClassifierDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentClassifierDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentClassifierDetails.
+     */
+    @Generated
+    public static DocumentClassifierDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String classifierId = null;
+            OffsetDateTime createdDateTime = null;
+            String apiVersion = null;
+            Map docTypes = null;
+            String description = null;
+            OffsetDateTime expirationDateTime = null;
+            String baseClassifierId = null;
+            List warnings = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("classifierId".equals(fieldName)) {
+                    classifierId = reader.getString();
+                } else if ("createdDateTime".equals(fieldName)) {
+                    createdDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("apiVersion".equals(fieldName)) {
+                    apiVersion = reader.getString();
+                } else if ("docTypes".equals(fieldName)) {
+                    docTypes = reader.readMap(reader1 -> ClassifierDocumentTypeDetails.fromJson(reader1));
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("expirationDateTime".equals(fieldName)) {
+                    expirationDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("baseClassifierId".equals(fieldName)) {
+                    baseClassifierId = reader.getString();
+                } else if ("warnings".equals(fieldName)) {
+                    warnings = reader.readArray(reader1 -> Warning.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentClassifierDetails deserializedDocumentClassifierDetails
+                = new DocumentClassifierDetails(createdDateTime, apiVersion, docTypes);
+            deserializedDocumentClassifierDetails.classifierId = classifierId;
+            deserializedDocumentClassifierDetails.description = description;
+            deserializedDocumentClassifierDetails.expirationDateTime = expirationDateTime;
+            deserializedDocumentClassifierDetails.baseClassifierId = baseClassifierId;
+            deserializedDocumentClassifierDetails.warnings = warnings;
+
+            return deserializedDocumentClassifierDetails;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentField.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentField.java
index 3c977e91749d..571f58d99300 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentField.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentField.java
@@ -6,155 +6,139 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * An object representing the content and location of a field value.
  */
 @Immutable
-public final class DocumentField {
+public final class DocumentField implements JsonSerializable {
     /*
      * Data type of the field value.
      */
     @Generated
-    @JsonProperty(value = "type")
-    private DocumentFieldType type;
+    private final DocumentFieldType type;
 
     /*
      * String value.
      */
     @Generated
-    @JsonProperty(value = "valueString")
     private String valueString;
 
     /*
      * Date value in YYYY-MM-DD format (ISO 8601).
      */
     @Generated
-    @JsonProperty(value = "valueDate")
     private LocalDate valueDate;
 
     /*
      * Time value in hh:mm:ss format (ISO 8601).
      */
     @Generated
-    @JsonProperty(value = "valueTime")
     private String valueTime;
 
     /*
      * Phone number value in E.164 format (ex. +19876543210).
      */
     @Generated
-    @JsonProperty(value = "valuePhoneNumber")
     private String valuePhoneNumber;
 
     /*
      * Floating point value.
      */
     @Generated
-    @JsonProperty(value = "valueNumber")
     private Double valueNumber;
 
     /*
      * Integer value.
      */
     @Generated
-    @JsonProperty(value = "valueInteger")
     private Long valueInteger;
 
     /*
      * Selection mark value.
      */
     @Generated
-    @JsonProperty(value = "valueSelectionMark")
     private DocumentSelectionMarkState valueSelectionMark;
 
     /*
      * Presence of signature.
      */
     @Generated
-    @JsonProperty(value = "valueSignature")
     private DocumentSignatureType valueSignature;
 
     /*
      * 3-letter country code value (ISO 3166-1 alpha-3).
      */
     @Generated
-    @JsonProperty(value = "valueCountryRegion")
     private String valueCountryRegion;
 
     /*
      * Array of field values.
      */
     @Generated
-    @JsonProperty(value = "valueArray")
     private List valueArray;
 
     /*
      * Dictionary of named field values.
      */
     @Generated
-    @JsonProperty(value = "valueObject")
     private Map valueObject;
 
     /*
      * Currency value.
      */
     @Generated
-    @JsonProperty(value = "valueCurrency")
     private CurrencyValue valueCurrency;
 
     /*
      * Address value.
      */
     @Generated
-    @JsonProperty(value = "valueAddress")
     private AddressValue valueAddress;
 
     /*
      * Boolean value.
      */
     @Generated
-    @JsonProperty(value = "valueBoolean")
     private Boolean valueBoolean;
 
     /*
      * Selection group value.
      */
     @Generated
-    @JsonProperty(value = "valueSelectionGroup")
     private List valueSelectionGroup;
 
     /*
      * Field content.
      */
     @Generated
-    @JsonProperty(value = "content")
     private String content;
 
     /*
      * Bounding regions covering the field.
      */
     @Generated
-    @JsonProperty(value = "boundingRegions")
     private List boundingRegions;
 
     /*
      * Location of the field in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
     private List spans;
 
     /*
      * Confidence of correctly extracting the field.
      */
     @Generated
-    @JsonProperty(value = "confidence")
     private Double confidence;
 
     /**
@@ -163,8 +147,7 @@ public final class DocumentField {
      * @param type the type value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentField(@JsonProperty(value = "type") DocumentFieldType type) {
+    private DocumentField(DocumentFieldType type) {
         this.type = type;
     }
 
@@ -367,4 +350,142 @@ public List getSpans() {
     public Double getConfidence() {
         return this.confidence;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString());
+        jsonWriter.writeStringField("valueString", this.valueString);
+        jsonWriter.writeStringField("valueDate", Objects.toString(this.valueDate, null));
+        jsonWriter.writeStringField("valueTime", this.valueTime);
+        jsonWriter.writeStringField("valuePhoneNumber", this.valuePhoneNumber);
+        jsonWriter.writeNumberField("valueNumber", this.valueNumber);
+        jsonWriter.writeNumberField("valueInteger", this.valueInteger);
+        jsonWriter.writeStringField("valueSelectionMark",
+            this.valueSelectionMark == null ? null : this.valueSelectionMark.toString());
+        jsonWriter.writeStringField("valueSignature",
+            this.valueSignature == null ? null : this.valueSignature.toString());
+        jsonWriter.writeStringField("valueCountryRegion", this.valueCountryRegion);
+        jsonWriter.writeArrayField("valueArray", this.valueArray, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeMapField("valueObject", this.valueObject, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("valueCurrency", this.valueCurrency);
+        jsonWriter.writeJsonField("valueAddress", this.valueAddress);
+        jsonWriter.writeBooleanField("valueBoolean", this.valueBoolean);
+        jsonWriter.writeArrayField("valueSelectionGroup", this.valueSelectionGroup,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("content", this.content);
+        jsonWriter.writeArrayField("boundingRegions", this.boundingRegions,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeNumberField("confidence", this.confidence);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentField from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentField if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentField.
+     */
+    @Generated
+    public static DocumentField fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DocumentFieldType type = null;
+            String valueString = null;
+            LocalDate valueDate = null;
+            String valueTime = null;
+            String valuePhoneNumber = null;
+            Double valueNumber = null;
+            Long valueInteger = null;
+            DocumentSelectionMarkState valueSelectionMark = null;
+            DocumentSignatureType valueSignature = null;
+            String valueCountryRegion = null;
+            List valueArray = null;
+            Map valueObject = null;
+            CurrencyValue valueCurrency = null;
+            AddressValue valueAddress = null;
+            Boolean valueBoolean = null;
+            List valueSelectionGroup = null;
+            String content = null;
+            List boundingRegions = null;
+            List spans = null;
+            Double confidence = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("type".equals(fieldName)) {
+                    type = DocumentFieldType.fromString(reader.getString());
+                } else if ("valueString".equals(fieldName)) {
+                    valueString = reader.getString();
+                } else if ("valueDate".equals(fieldName)) {
+                    valueDate = reader.getNullable(nonNullReader -> LocalDate.parse(nonNullReader.getString()));
+                } else if ("valueTime".equals(fieldName)) {
+                    valueTime = reader.getString();
+                } else if ("valuePhoneNumber".equals(fieldName)) {
+                    valuePhoneNumber = reader.getString();
+                } else if ("valueNumber".equals(fieldName)) {
+                    valueNumber = reader.getNullable(JsonReader::getDouble);
+                } else if ("valueInteger".equals(fieldName)) {
+                    valueInteger = reader.getNullable(JsonReader::getLong);
+                } else if ("valueSelectionMark".equals(fieldName)) {
+                    valueSelectionMark = DocumentSelectionMarkState.fromString(reader.getString());
+                } else if ("valueSignature".equals(fieldName)) {
+                    valueSignature = DocumentSignatureType.fromString(reader.getString());
+                } else if ("valueCountryRegion".equals(fieldName)) {
+                    valueCountryRegion = reader.getString();
+                } else if ("valueArray".equals(fieldName)) {
+                    valueArray = reader.readArray(reader1 -> DocumentField.fromJson(reader1));
+                } else if ("valueObject".equals(fieldName)) {
+                    valueObject = reader.readMap(reader1 -> DocumentField.fromJson(reader1));
+                } else if ("valueCurrency".equals(fieldName)) {
+                    valueCurrency = CurrencyValue.fromJson(reader);
+                } else if ("valueAddress".equals(fieldName)) {
+                    valueAddress = AddressValue.fromJson(reader);
+                } else if ("valueBoolean".equals(fieldName)) {
+                    valueBoolean = reader.getNullable(JsonReader::getBoolean);
+                } else if ("valueSelectionGroup".equals(fieldName)) {
+                    valueSelectionGroup = reader.readArray(reader1 -> reader1.getString());
+                } else if ("content".equals(fieldName)) {
+                    content = reader.getString();
+                } else if ("boundingRegions".equals(fieldName)) {
+                    boundingRegions = reader.readArray(reader1 -> BoundingRegion.fromJson(reader1));
+                } else if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("confidence".equals(fieldName)) {
+                    confidence = reader.getNullable(JsonReader::getDouble);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentField deserializedDocumentField = new DocumentField(type);
+            deserializedDocumentField.valueString = valueString;
+            deserializedDocumentField.valueDate = valueDate;
+            deserializedDocumentField.valueTime = valueTime;
+            deserializedDocumentField.valuePhoneNumber = valuePhoneNumber;
+            deserializedDocumentField.valueNumber = valueNumber;
+            deserializedDocumentField.valueInteger = valueInteger;
+            deserializedDocumentField.valueSelectionMark = valueSelectionMark;
+            deserializedDocumentField.valueSignature = valueSignature;
+            deserializedDocumentField.valueCountryRegion = valueCountryRegion;
+            deserializedDocumentField.valueArray = valueArray;
+            deserializedDocumentField.valueObject = valueObject;
+            deserializedDocumentField.valueCurrency = valueCurrency;
+            deserializedDocumentField.valueAddress = valueAddress;
+            deserializedDocumentField.valueBoolean = valueBoolean;
+            deserializedDocumentField.valueSelectionGroup = valueSelectionGroup;
+            deserializedDocumentField.content = content;
+            deserializedDocumentField.boundingRegions = boundingRegions;
+            deserializedDocumentField.spans = spans;
+            deserializedDocumentField.confidence = confidence;
+
+            return deserializedDocumentField;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFieldSchema.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFieldSchema.java
index 10dc97495412..27d45bb2b2be 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFieldSchema.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFieldSchema.java
@@ -6,48 +6,46 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * Description of the field semantic schema using a JSON Schema style syntax.
  */
 @Immutable
-public final class DocumentFieldSchema {
+public final class DocumentFieldSchema implements JsonSerializable {
     /*
      * Semantic data type of the field value.
      */
     @Generated
-    @JsonProperty(value = "type")
-    private DocumentFieldType type;
+    private final DocumentFieldType type;
 
     /*
      * Field description.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * Example field content.
      */
     @Generated
-    @JsonProperty(value = "example")
     private String example;
 
     /*
      * Field type schema of each array element.
      */
     @Generated
-    @JsonProperty(value = "items")
     private DocumentFieldSchema items;
 
     /*
      * Named sub-fields of the object field.
      */
     @Generated
-    @JsonProperty(value = "properties")
     private Map properties;
 
     /**
@@ -56,8 +54,7 @@ public final class DocumentFieldSchema {
      * @param type the type value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentFieldSchema(@JsonProperty(value = "type") DocumentFieldType type) {
+    private DocumentFieldSchema(DocumentFieldType type) {
         this.type = type;
     }
 
@@ -110,4 +107,63 @@ public DocumentFieldSchema getItems() {
     public Map getProperties() {
         return this.properties;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString());
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("example", this.example);
+        jsonWriter.writeJsonField("items", this.items);
+        jsonWriter.writeMapField("properties", this.properties, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentFieldSchema from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentFieldSchema if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentFieldSchema.
+     */
+    @Generated
+    public static DocumentFieldSchema fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DocumentFieldType type = null;
+            String description = null;
+            String example = null;
+            DocumentFieldSchema items = null;
+            Map properties = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("type".equals(fieldName)) {
+                    type = DocumentFieldType.fromString(reader.getString());
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("example".equals(fieldName)) {
+                    example = reader.getString();
+                } else if ("items".equals(fieldName)) {
+                    items = DocumentFieldSchema.fromJson(reader);
+                } else if ("properties".equals(fieldName)) {
+                    properties = reader.readMap(reader1 -> DocumentFieldSchema.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentFieldSchema deserializedDocumentFieldSchema = new DocumentFieldSchema(type);
+            deserializedDocumentFieldSchema.description = description;
+            deserializedDocumentFieldSchema.example = example;
+            deserializedDocumentFieldSchema.items = items;
+            deserializedDocumentFieldSchema.properties = properties;
+
+            return deserializedDocumentFieldSchema;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFieldType.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFieldType.java
index 24279473af97..7a44e88d902f 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFieldType.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFieldType.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -120,7 +119,6 @@ public DocumentFieldType() {
      * @return the corresponding DocumentFieldType.
      */
     @Generated
-    @JsonCreator
     public static DocumentFieldType fromString(String name) {
         return fromString(name, DocumentFieldType.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFigure.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFigure.java
index 1f9431845b09..b96dd53828b7 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFigure.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFigure.java
@@ -6,48 +6,46 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * An object representing a figure in the document.
  */
 @Immutable
-public final class DocumentFigure {
+public final class DocumentFigure implements JsonSerializable {
     /*
      * Bounding regions covering the figure.
      */
     @Generated
-    @JsonProperty(value = "boundingRegions")
     private List boundingRegions;
 
     /*
      * Location of the figure in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /*
      * Child elements of the figure, excluding any caption or footnotes.
      */
     @Generated
-    @JsonProperty(value = "elements")
     private List elements;
 
     /*
      * Caption associated with the figure.
      */
     @Generated
-    @JsonProperty(value = "caption")
     private DocumentCaption caption;
 
     /*
      * List of footnotes associated with the figure.
      */
     @Generated
-    @JsonProperty(value = "footnotes")
     private List footnotes;
 
     /**
@@ -56,8 +54,7 @@ public final class DocumentFigure {
      * @param spans the spans value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentFigure(@JsonProperty(value = "spans") List spans) {
+    private DocumentFigure(List spans) {
         this.spans = spans;
     }
 
@@ -110,4 +107,64 @@ public DocumentCaption getCaption() {
     public List getFootnotes() {
         return this.footnotes;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("boundingRegions", this.boundingRegions,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("elements", this.elements, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeJsonField("caption", this.caption);
+        jsonWriter.writeArrayField("footnotes", this.footnotes, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentFigure from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentFigure if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentFigure.
+     */
+    @Generated
+    public static DocumentFigure fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List spans = null;
+            List boundingRegions = null;
+            List elements = null;
+            DocumentCaption caption = null;
+            List footnotes = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("boundingRegions".equals(fieldName)) {
+                    boundingRegions = reader.readArray(reader1 -> BoundingRegion.fromJson(reader1));
+                } else if ("elements".equals(fieldName)) {
+                    elements = reader.readArray(reader1 -> reader1.getString());
+                } else if ("caption".equals(fieldName)) {
+                    caption = DocumentCaption.fromJson(reader);
+                } else if ("footnotes".equals(fieldName)) {
+                    footnotes = reader.readArray(reader1 -> DocumentFootnote.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentFigure deserializedDocumentFigure = new DocumentFigure(spans);
+            deserializedDocumentFigure.boundingRegions = boundingRegions;
+            deserializedDocumentFigure.elements = elements;
+            deserializedDocumentFigure.caption = caption;
+            deserializedDocumentFigure.footnotes = footnotes;
+
+            return deserializedDocumentFigure;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFootnote.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFootnote.java
index b2a5ba356d01..b38ea2abc830 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFootnote.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFootnote.java
@@ -6,41 +6,40 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * A footnote object describing a table or figure.
  */
 @Immutable
-public final class DocumentFootnote {
+public final class DocumentFootnote implements JsonSerializable {
     /*
      * Content of the footnote.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private String content;
+    private final String content;
 
     /*
      * Bounding regions covering the footnote.
      */
     @Generated
-    @JsonProperty(value = "boundingRegions")
     private List boundingRegions;
 
     /*
      * Location of the footnote in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /*
      * Child elements of the footnote.
      */
     @Generated
-    @JsonProperty(value = "elements")
     private List elements;
 
     /**
@@ -50,9 +49,7 @@ public final class DocumentFootnote {
      * @param spans the spans value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentFootnote(@JsonProperty(value = "content") String content,
-        @JsonProperty(value = "spans") List spans) {
+    private DocumentFootnote(String content, List spans) {
         this.content = content;
         this.spans = spans;
     }
@@ -96,4 +93,58 @@ public List getSpans() {
     public List getElements() {
         return this.elements;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("content", this.content);
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("boundingRegions", this.boundingRegions,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("elements", this.elements, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentFootnote from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentFootnote if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentFootnote.
+     */
+    @Generated
+    public static DocumentFootnote fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String content = null;
+            List spans = null;
+            List boundingRegions = null;
+            List elements = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("content".equals(fieldName)) {
+                    content = reader.getString();
+                } else if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("boundingRegions".equals(fieldName)) {
+                    boundingRegions = reader.readArray(reader1 -> BoundingRegion.fromJson(reader1));
+                } else if ("elements".equals(fieldName)) {
+                    elements = reader.readArray(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentFootnote deserializedDocumentFootnote = new DocumentFootnote(content, spans);
+            deserializedDocumentFootnote.boundingRegions = boundingRegions;
+            deserializedDocumentFootnote.elements = elements;
+
+            return deserializedDocumentFootnote;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFormula.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFormula.java
index cfacd214a237..67ea57cea9f2 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFormula.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFormula.java
@@ -6,28 +6,29 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * A formula object.
  */
 @Immutable
-public final class DocumentFormula {
+public final class DocumentFormula implements JsonSerializable {
     /*
      * Formula kind.
      */
     @Generated
-    @JsonProperty(value = "kind")
-    private DocumentFormulaKind kind;
+    private final DocumentFormulaKind kind;
 
     /*
      * LaTex expression describing the formula.
      */
     @Generated
-    @JsonProperty(value = "value")
-    private String value;
+    private final String value;
 
     /*
      * Bounding polygon of the formula, with coordinates specified relative to the
@@ -36,22 +37,19 @@ public final class DocumentFormula {
      * element orientation.
      */
     @Generated
-    @JsonProperty(value = "polygon")
     private List polygon;
 
     /*
      * Location of the formula in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "span")
-    private DocumentSpan span;
+    private final DocumentSpan span;
 
     /*
      * Confidence of correctly extracting the formula.
      */
     @Generated
-    @JsonProperty(value = "confidence")
-    private double confidence;
+    private final double confidence;
 
     /**
      * Creates an instance of DocumentFormula class.
@@ -62,10 +60,7 @@ public final class DocumentFormula {
      * @param confidence the confidence value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentFormula(@JsonProperty(value = "kind") DocumentFormulaKind kind,
-        @JsonProperty(value = "value") String value, @JsonProperty(value = "span") DocumentSpan span,
-        @JsonProperty(value = "confidence") double confidence) {
+    private DocumentFormula(DocumentFormulaKind kind, String value, DocumentSpan span, double confidence) {
         this.kind = kind;
         this.value = value;
         this.span = span;
@@ -124,4 +119,60 @@ public DocumentSpan getSpan() {
     public double getConfidence() {
         return this.confidence;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString());
+        jsonWriter.writeStringField("value", this.value);
+        jsonWriter.writeJsonField("span", this.span);
+        jsonWriter.writeDoubleField("confidence", this.confidence);
+        jsonWriter.writeArrayField("polygon", this.polygon, (writer, element) -> writer.writeDouble(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentFormula from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentFormula if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentFormula.
+     */
+    @Generated
+    public static DocumentFormula fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DocumentFormulaKind kind = null;
+            String value = null;
+            DocumentSpan span = null;
+            double confidence = 0.0;
+            List polygon = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("kind".equals(fieldName)) {
+                    kind = DocumentFormulaKind.fromString(reader.getString());
+                } else if ("value".equals(fieldName)) {
+                    value = reader.getString();
+                } else if ("span".equals(fieldName)) {
+                    span = DocumentSpan.fromJson(reader);
+                } else if ("confidence".equals(fieldName)) {
+                    confidence = reader.getDouble();
+                } else if ("polygon".equals(fieldName)) {
+                    polygon = reader.readArray(reader1 -> reader1.getDouble());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentFormula deserializedDocumentFormula = new DocumentFormula(kind, value, span, confidence);
+            deserializedDocumentFormula.polygon = polygon;
+
+            return deserializedDocumentFormula;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFormulaKind.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFormulaKind.java
index 22e009191a1b..c7207ca50048 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFormulaKind.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentFormulaKind.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public DocumentFormulaKind() {
      * @return the corresponding DocumentFormulaKind.
      */
     @Generated
-    @JsonCreator
     public static DocumentFormulaKind fromString(String name) {
         return fromString(name, DocumentFormulaKind.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentKeyValueElement.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentKeyValueElement.java
index 10dbd8ba27e4..6358b99b42c2 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentKeyValueElement.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentKeyValueElement.java
@@ -6,35 +6,35 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * An object representing the field key or value in a key-value pair.
  */
 @Immutable
-public final class DocumentKeyValueElement {
+public final class DocumentKeyValueElement implements JsonSerializable {
     /*
      * Concatenated content of the key-value element in reading order.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private String content;
+    private final String content;
 
     /*
      * Bounding regions covering the key-value element.
      */
     @Generated
-    @JsonProperty(value = "boundingRegions")
     private List boundingRegions;
 
     /*
      * Location of the key-value element in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /**
      * Creates an instance of DocumentKeyValueElement class.
@@ -43,9 +43,7 @@ public final class DocumentKeyValueElement {
      * @param spans the spans value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentKeyValueElement(@JsonProperty(value = "content") String content,
-        @JsonProperty(value = "spans") List spans) {
+    private DocumentKeyValueElement(String content, List spans) {
         this.content = content;
         this.spans = spans;
     }
@@ -79,4 +77,53 @@ public List getBoundingRegions() {
     public List getSpans() {
         return this.spans;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("content", this.content);
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("boundingRegions", this.boundingRegions,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentKeyValueElement from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentKeyValueElement if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentKeyValueElement.
+     */
+    @Generated
+    public static DocumentKeyValueElement fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String content = null;
+            List spans = null;
+            List boundingRegions = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("content".equals(fieldName)) {
+                    content = reader.getString();
+                } else if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("boundingRegions".equals(fieldName)) {
+                    boundingRegions = reader.readArray(reader1 -> BoundingRegion.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentKeyValueElement deserializedDocumentKeyValueElement = new DocumentKeyValueElement(content, spans);
+            deserializedDocumentKeyValueElement.boundingRegions = boundingRegions;
+
+            return deserializedDocumentKeyValueElement;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentKeyValuePair.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentKeyValuePair.java
index c11d29d91845..f09fdc95aa7f 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentKeyValuePair.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentKeyValuePair.java
@@ -6,35 +6,35 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An object representing a form field with distinct field label (key) and field
  * value (may be empty).
  */
 @Immutable
-public final class DocumentKeyValuePair {
+public final class DocumentKeyValuePair implements JsonSerializable {
     /*
      * Field label of the key-value pair.
      */
     @Generated
-    @JsonProperty(value = "key")
-    private DocumentKeyValueElement key;
+    private final DocumentKeyValueElement key;
 
     /*
      * Field value of the key-value pair.
      */
     @Generated
-    @JsonProperty(value = "value")
     private DocumentKeyValueElement value;
 
     /*
      * Confidence of correctly extracting the key-value pair.
      */
     @Generated
-    @JsonProperty(value = "confidence")
-    private double confidence;
+    private final double confidence;
 
     /**
      * Creates an instance of DocumentKeyValuePair class.
@@ -43,9 +43,7 @@ public final class DocumentKeyValuePair {
      * @param confidence the confidence value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentKeyValuePair(@JsonProperty(value = "key") DocumentKeyValueElement key,
-        @JsonProperty(value = "confidence") double confidence) {
+    private DocumentKeyValuePair(DocumentKeyValueElement key, double confidence) {
         this.key = key;
         this.confidence = confidence;
     }
@@ -79,4 +77,52 @@ public DocumentKeyValueElement getValue() {
     public double getConfidence() {
         return this.confidence;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeJsonField("key", this.key);
+        jsonWriter.writeDoubleField("confidence", this.confidence);
+        jsonWriter.writeJsonField("value", this.value);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentKeyValuePair from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentKeyValuePair if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentKeyValuePair.
+     */
+    @Generated
+    public static DocumentKeyValuePair fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DocumentKeyValueElement key = null;
+            double confidence = 0.0;
+            DocumentKeyValueElement value = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("key".equals(fieldName)) {
+                    key = DocumentKeyValueElement.fromJson(reader);
+                } else if ("confidence".equals(fieldName)) {
+                    confidence = reader.getDouble();
+                } else if ("value".equals(fieldName)) {
+                    value = DocumentKeyValueElement.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentKeyValuePair deserializedDocumentKeyValuePair = new DocumentKeyValuePair(key, confidence);
+            deserializedDocumentKeyValuePair.value = value;
+
+            return deserializedDocumentKeyValuePair;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentLanguage.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentLanguage.java
index 0c039d921dee..a3f481cf5157 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentLanguage.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentLanguage.java
@@ -6,37 +6,37 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * An object representing the detected language for a given text span.
  */
 @Immutable
-public final class DocumentLanguage {
+public final class DocumentLanguage implements JsonSerializable {
     /*
-     * Detected language. Value may an ISO 639-1 language code (ex. "en", "fr")
+     * Detected language.  Value may an ISO 639-1 language code (ex. "en", "fr")
      * or BCP 47 language tag (ex. "zh-Hans").
      */
     @Generated
-    @JsonProperty(value = "locale")
-    private String locale;
+    private final String locale;
 
     /*
      * Location of the text elements in the concatenated content the language applies
      * to.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /*
      * Confidence of correctly identifying the language.
      */
     @Generated
-    @JsonProperty(value = "confidence")
-    private double confidence;
+    private final double confidence;
 
     /**
      * Creates an instance of DocumentLanguage class.
@@ -46,17 +46,14 @@ public final class DocumentLanguage {
      * @param confidence the confidence value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentLanguage(@JsonProperty(value = "locale") String locale,
-        @JsonProperty(value = "spans") List spans,
-        @JsonProperty(value = "confidence") double confidence) {
+    private DocumentLanguage(String locale, List spans, double confidence) {
         this.locale = locale;
         this.spans = spans;
         this.confidence = confidence;
     }
 
     /**
-     * Get the locale property: Detected language. Value may an ISO 639-1 language code (ex. "en", "fr")
+     * Get the locale property: Detected language.  Value may an ISO 639-1 language code (ex. "en", "fr")
      * or BCP 47 language tag (ex. "zh-Hans").
      * 
      * @return the locale value.
@@ -86,4 +83,49 @@ public List getSpans() {
     public double getConfidence() {
         return this.confidence;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("locale", this.locale);
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeDoubleField("confidence", this.confidence);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentLanguage from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentLanguage if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentLanguage.
+     */
+    @Generated
+    public static DocumentLanguage fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String locale = null;
+            List spans = null;
+            double confidence = 0.0;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("locale".equals(fieldName)) {
+                    locale = reader.getString();
+                } else if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("confidence".equals(fieldName)) {
+                    confidence = reader.getDouble();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new DocumentLanguage(locale, spans, confidence);
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentLine.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentLine.java
index 295ee9f5a37a..a36c2ba6b89f 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentLine.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentLine.java
@@ -6,8 +6,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -15,13 +18,12 @@
  * such as words and selection marks.
  */
 @Immutable
-public final class DocumentLine {
+public final class DocumentLine implements JsonSerializable {
     /*
      * Concatenated content of the contained elements in reading order.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private String content;
+    private final String content;
 
     /*
      * Bounding polygon of the line, with coordinates specified relative to the
@@ -30,15 +32,13 @@ public final class DocumentLine {
      * element orientation.
      */
     @Generated
-    @JsonProperty(value = "polygon")
     private List polygon;
 
     /*
      * Location of the line in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /**
      * Creates an instance of DocumentLine class.
@@ -47,9 +47,7 @@ public final class DocumentLine {
      * @param spans the spans value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentLine(@JsonProperty(value = "content") String content,
-        @JsonProperty(value = "spans") List spans) {
+    private DocumentLine(String content, List spans) {
         this.content = content;
         this.spans = spans;
     }
@@ -86,4 +84,52 @@ public List getPolygon() {
     public List getSpans() {
         return this.spans;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("content", this.content);
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("polygon", this.polygon, (writer, element) -> writer.writeDouble(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentLine from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentLine if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentLine.
+     */
+    @Generated
+    public static DocumentLine fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String content = null;
+            List spans = null;
+            List polygon = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("content".equals(fieldName)) {
+                    content = reader.getString();
+                } else if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("polygon".equals(fieldName)) {
+                    polygon = reader.readArray(reader1 -> reader1.getDouble());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentLine deserializedDocumentLine = new DocumentLine(content, spans);
+            deserializedDocumentLine.polygon = polygon;
+
+            return deserializedDocumentLine;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentList.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentList.java
index 950ee1dc4517..26aeac9923f3 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentList.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentList.java
@@ -6,28 +6,29 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * An object representing a list in the document.
  */
 @Immutable
-public final class DocumentList {
+public final class DocumentList implements JsonSerializable {
     /*
      * Location of the list in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /*
      * Items in the list.
      */
     @Generated
-    @JsonProperty(value = "items")
-    private List items;
+    private final List items;
 
     /**
      * Creates an instance of DocumentList class.
@@ -36,9 +37,7 @@ public final class DocumentList {
      * @param items the items value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentList(@JsonProperty(value = "spans") List spans,
-        @JsonProperty(value = "items") List items) {
+    private DocumentList(List spans, List items) {
         this.spans = spans;
         this.items = items;
     }
@@ -62,4 +61,45 @@ public List getSpans() {
     public List getItems() {
         return this.items;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("items", this.items, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentList from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentList if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentList.
+     */
+    @Generated
+    public static DocumentList fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List spans = null;
+            List items = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("items".equals(fieldName)) {
+                    items = reader.readArray(reader1 -> DocumentListItem.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new DocumentList(spans, items);
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentListItem.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentListItem.java
index 45317a400e03..b3215bc2dcb1 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentListItem.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentListItem.java
@@ -6,48 +6,46 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * An object representing a list item in the document.
  */
 @Immutable
-public final class DocumentListItem {
+public final class DocumentListItem implements JsonSerializable {
     /*
      * Level of the list item (1-indexed).
      */
     @Generated
-    @JsonProperty(value = "level")
-    private int level;
+    private final int level;
 
     /*
      * Content of the list item.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private String content;
+    private final String content;
 
     /*
      * Bounding regions covering the list item.
      */
     @Generated
-    @JsonProperty(value = "boundingRegions")
     private List boundingRegions;
 
     /*
      * Location of the list item in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /*
      * Child elements of the list item.
      */
     @Generated
-    @JsonProperty(value = "elements")
     private List elements;
 
     /**
@@ -58,9 +56,7 @@ public final class DocumentListItem {
      * @param spans the spans value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentListItem(@JsonProperty(value = "level") int level, @JsonProperty(value = "content") String content,
-        @JsonProperty(value = "spans") List spans) {
+    private DocumentListItem(int level, String content, List spans) {
         this.level = level;
         this.content = content;
         this.spans = spans;
@@ -115,4 +111,62 @@ public List getSpans() {
     public List getElements() {
         return this.elements;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeIntField("level", this.level);
+        jsonWriter.writeStringField("content", this.content);
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("boundingRegions", this.boundingRegions,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("elements", this.elements, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentListItem from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentListItem if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentListItem.
+     */
+    @Generated
+    public static DocumentListItem fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            int level = 0;
+            String content = null;
+            List spans = null;
+            List boundingRegions = null;
+            List elements = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("level".equals(fieldName)) {
+                    level = reader.getInt();
+                } else if ("content".equals(fieldName)) {
+                    content = reader.getString();
+                } else if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("boundingRegions".equals(fieldName)) {
+                    boundingRegions = reader.readArray(reader1 -> BoundingRegion.fromJson(reader1));
+                } else if ("elements".equals(fieldName)) {
+                    elements = reader.readArray(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentListItem deserializedDocumentListItem = new DocumentListItem(level, content, spans);
+            deserializedDocumentListItem.boundingRegions = boundingRegions;
+            deserializedDocumentListItem.elements = elements;
+
+            return deserializedDocumentListItem;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelBuildOperationDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelBuildOperationDetails.java
index aae67ee13d2f..6d5870f585f7 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelBuildOperationDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelBuildOperationDetails.java
@@ -6,24 +6,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Map;
 
 /**
  * Get Operation response object.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("documentModelBuild")
 @Immutable
 public final class DocumentModelBuildOperationDetails extends OperationDetails {
     /*
      * Operation result upon success.
      */
     @Generated
-    @JsonProperty(value = "result")
     private DocumentModelDetails result;
 
     /**
@@ -35,12 +34,10 @@ public final class DocumentModelBuildOperationDetails extends OperationDetails {
      * @param resourceLocation the resourceLocation value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentModelBuildOperationDetails(@JsonProperty(value = "status") OperationStatus status,
-        @JsonProperty(value = "createdDateTime") OffsetDateTime createdDateTime,
-        @JsonProperty(value = "lastUpdatedDateTime") OffsetDateTime lastUpdatedDateTime,
-        @JsonProperty(value = "resourceLocation") String resourceLocation) {
+    private DocumentModelBuildOperationDetails(OperationStatus status, OffsetDateTime createdDateTime,
+        OffsetDateTime lastUpdatedDateTime, String resourceLocation) {
         super(status, createdDateTime, lastUpdatedDateTime, resourceLocation);
+        setKind(OperationKind.DOCUMENT_MODEL_BUILD);
     }
 
     /**
@@ -52,4 +49,97 @@ private DocumentModelBuildOperationDetails(@JsonProperty(value = "status") Opera
     public DocumentModelDetails getResult() {
         return this.result;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("status", getStatus() == null ? null : getStatus().toString());
+        jsonWriter.writeStringField("createdDateTime",
+            getCreatedDateTime() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getCreatedDateTime()));
+        jsonWriter.writeStringField("lastUpdatedDateTime",
+            getLastUpdatedDateTime() == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getLastUpdatedDateTime()));
+        jsonWriter.writeStringField("resourceLocation", getResourceLocation());
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeNumberField("percentCompleted", getPercentCompleted());
+        jsonWriter.writeStringField("apiVersion", getApiVersion());
+        jsonWriter.writeMapField("tags", getTags(), (writer, element) -> writer.writeString(element));
+        jsonWriter.writeJsonField("error", getError());
+        jsonWriter.writeJsonField("result", this.result);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentModelBuildOperationDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentModelBuildOperationDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentModelBuildOperationDetails.
+     */
+    @Generated
+    public static DocumentModelBuildOperationDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String operationId = null;
+            OperationStatus status = null;
+            OffsetDateTime createdDateTime = null;
+            OffsetDateTime lastUpdatedDateTime = null;
+            String resourceLocation = null;
+            OperationKind kind = OperationKind.DOCUMENT_MODEL_BUILD;
+            Integer percentCompleted = null;
+            String apiVersion = null;
+            Map tags = null;
+            Error error = null;
+            DocumentModelDetails result = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("operationId".equals(fieldName)) {
+                    operationId = reader.getString();
+                } else if ("status".equals(fieldName)) {
+                    status = OperationStatus.fromString(reader.getString());
+                } else if ("createdDateTime".equals(fieldName)) {
+                    createdDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastUpdatedDateTime".equals(fieldName)) {
+                    lastUpdatedDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("resourceLocation".equals(fieldName)) {
+                    resourceLocation = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = OperationKind.fromString(reader.getString());
+                } else if ("percentCompleted".equals(fieldName)) {
+                    percentCompleted = reader.getNullable(JsonReader::getInt);
+                } else if ("apiVersion".equals(fieldName)) {
+                    apiVersion = reader.getString();
+                } else if ("tags".equals(fieldName)) {
+                    tags = reader.readMap(reader1 -> reader1.getString());
+                } else if ("error".equals(fieldName)) {
+                    error = Error.fromJson(reader);
+                } else if ("result".equals(fieldName)) {
+                    result = DocumentModelDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentModelBuildOperationDetails deserializedDocumentModelBuildOperationDetails
+                = new DocumentModelBuildOperationDetails(status, createdDateTime, lastUpdatedDateTime,
+                    resourceLocation);
+            deserializedDocumentModelBuildOperationDetails.setOperationId(operationId);
+            deserializedDocumentModelBuildOperationDetails.setKind(kind);
+            deserializedDocumentModelBuildOperationDetails.setPercentCompleted(percentCompleted);
+            deserializedDocumentModelBuildOperationDetails.setApiVersion(apiVersion);
+            deserializedDocumentModelBuildOperationDetails.setTags(tags);
+            deserializedDocumentModelBuildOperationDetails.setError(error);
+            deserializedDocumentModelBuildOperationDetails.result = result;
+
+            return deserializedDocumentModelBuildOperationDetails;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelComposeOperationDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelComposeOperationDetails.java
index fad68af17161..fb56913e98b1 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelComposeOperationDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelComposeOperationDetails.java
@@ -6,24 +6,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Map;
 
 /**
  * Get Operation response object.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("documentModelCompose")
 @Immutable
 public final class DocumentModelComposeOperationDetails extends OperationDetails {
     /*
      * Operation result upon success.
      */
     @Generated
-    @JsonProperty(value = "result")
     private DocumentModelDetails result;
 
     /**
@@ -35,12 +34,10 @@ public final class DocumentModelComposeOperationDetails extends OperationDetails
      * @param resourceLocation the resourceLocation value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentModelComposeOperationDetails(@JsonProperty(value = "status") OperationStatus status,
-        @JsonProperty(value = "createdDateTime") OffsetDateTime createdDateTime,
-        @JsonProperty(value = "lastUpdatedDateTime") OffsetDateTime lastUpdatedDateTime,
-        @JsonProperty(value = "resourceLocation") String resourceLocation) {
+    private DocumentModelComposeOperationDetails(OperationStatus status, OffsetDateTime createdDateTime,
+        OffsetDateTime lastUpdatedDateTime, String resourceLocation) {
         super(status, createdDateTime, lastUpdatedDateTime, resourceLocation);
+        setKind(OperationKind.DOCUMENT_MODEL_COMPOSE);
     }
 
     /**
@@ -52,4 +49,97 @@ private DocumentModelComposeOperationDetails(@JsonProperty(value = "status") Ope
     public DocumentModelDetails getResult() {
         return this.result;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("status", getStatus() == null ? null : getStatus().toString());
+        jsonWriter.writeStringField("createdDateTime",
+            getCreatedDateTime() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getCreatedDateTime()));
+        jsonWriter.writeStringField("lastUpdatedDateTime",
+            getLastUpdatedDateTime() == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getLastUpdatedDateTime()));
+        jsonWriter.writeStringField("resourceLocation", getResourceLocation());
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeNumberField("percentCompleted", getPercentCompleted());
+        jsonWriter.writeStringField("apiVersion", getApiVersion());
+        jsonWriter.writeMapField("tags", getTags(), (writer, element) -> writer.writeString(element));
+        jsonWriter.writeJsonField("error", getError());
+        jsonWriter.writeJsonField("result", this.result);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentModelComposeOperationDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentModelComposeOperationDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentModelComposeOperationDetails.
+     */
+    @Generated
+    public static DocumentModelComposeOperationDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String operationId = null;
+            OperationStatus status = null;
+            OffsetDateTime createdDateTime = null;
+            OffsetDateTime lastUpdatedDateTime = null;
+            String resourceLocation = null;
+            OperationKind kind = OperationKind.DOCUMENT_MODEL_COMPOSE;
+            Integer percentCompleted = null;
+            String apiVersion = null;
+            Map tags = null;
+            Error error = null;
+            DocumentModelDetails result = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("operationId".equals(fieldName)) {
+                    operationId = reader.getString();
+                } else if ("status".equals(fieldName)) {
+                    status = OperationStatus.fromString(reader.getString());
+                } else if ("createdDateTime".equals(fieldName)) {
+                    createdDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastUpdatedDateTime".equals(fieldName)) {
+                    lastUpdatedDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("resourceLocation".equals(fieldName)) {
+                    resourceLocation = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = OperationKind.fromString(reader.getString());
+                } else if ("percentCompleted".equals(fieldName)) {
+                    percentCompleted = reader.getNullable(JsonReader::getInt);
+                } else if ("apiVersion".equals(fieldName)) {
+                    apiVersion = reader.getString();
+                } else if ("tags".equals(fieldName)) {
+                    tags = reader.readMap(reader1 -> reader1.getString());
+                } else if ("error".equals(fieldName)) {
+                    error = Error.fromJson(reader);
+                } else if ("result".equals(fieldName)) {
+                    result = DocumentModelDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentModelComposeOperationDetails deserializedDocumentModelComposeOperationDetails
+                = new DocumentModelComposeOperationDetails(status, createdDateTime, lastUpdatedDateTime,
+                    resourceLocation);
+            deserializedDocumentModelComposeOperationDetails.setOperationId(operationId);
+            deserializedDocumentModelComposeOperationDetails.setKind(kind);
+            deserializedDocumentModelComposeOperationDetails.setPercentCompleted(percentCompleted);
+            deserializedDocumentModelComposeOperationDetails.setApiVersion(apiVersion);
+            deserializedDocumentModelComposeOperationDetails.setTags(tags);
+            deserializedDocumentModelComposeOperationDetails.setError(error);
+            deserializedDocumentModelComposeOperationDetails.result = result;
+
+            return deserializedDocumentModelComposeOperationDetails;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelCopyToOperationDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelCopyToOperationDetails.java
index 10379ae40177..5c559b063357 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelCopyToOperationDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelCopyToOperationDetails.java
@@ -6,24 +6,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Map;
 
 /**
  * Get Operation response object.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("documentModelCopyTo")
 @Immutable
 public final class DocumentModelCopyToOperationDetails extends OperationDetails {
     /*
      * Operation result upon success.
      */
     @Generated
-    @JsonProperty(value = "result")
     private DocumentModelDetails result;
 
     /**
@@ -35,12 +34,10 @@ public final class DocumentModelCopyToOperationDetails extends OperationDetails
      * @param resourceLocation the resourceLocation value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentModelCopyToOperationDetails(@JsonProperty(value = "status") OperationStatus status,
-        @JsonProperty(value = "createdDateTime") OffsetDateTime createdDateTime,
-        @JsonProperty(value = "lastUpdatedDateTime") OffsetDateTime lastUpdatedDateTime,
-        @JsonProperty(value = "resourceLocation") String resourceLocation) {
+    private DocumentModelCopyToOperationDetails(OperationStatus status, OffsetDateTime createdDateTime,
+        OffsetDateTime lastUpdatedDateTime, String resourceLocation) {
         super(status, createdDateTime, lastUpdatedDateTime, resourceLocation);
+        setKind(OperationKind.DOCUMENT_MODEL_COPY_TO);
     }
 
     /**
@@ -52,4 +49,97 @@ private DocumentModelCopyToOperationDetails(@JsonProperty(value = "status") Oper
     public DocumentModelDetails getResult() {
         return this.result;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("status", getStatus() == null ? null : getStatus().toString());
+        jsonWriter.writeStringField("createdDateTime",
+            getCreatedDateTime() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getCreatedDateTime()));
+        jsonWriter.writeStringField("lastUpdatedDateTime",
+            getLastUpdatedDateTime() == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getLastUpdatedDateTime()));
+        jsonWriter.writeStringField("resourceLocation", getResourceLocation());
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeNumberField("percentCompleted", getPercentCompleted());
+        jsonWriter.writeStringField("apiVersion", getApiVersion());
+        jsonWriter.writeMapField("tags", getTags(), (writer, element) -> writer.writeString(element));
+        jsonWriter.writeJsonField("error", getError());
+        jsonWriter.writeJsonField("result", this.result);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentModelCopyToOperationDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentModelCopyToOperationDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentModelCopyToOperationDetails.
+     */
+    @Generated
+    public static DocumentModelCopyToOperationDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String operationId = null;
+            OperationStatus status = null;
+            OffsetDateTime createdDateTime = null;
+            OffsetDateTime lastUpdatedDateTime = null;
+            String resourceLocation = null;
+            OperationKind kind = OperationKind.DOCUMENT_MODEL_COPY_TO;
+            Integer percentCompleted = null;
+            String apiVersion = null;
+            Map tags = null;
+            Error error = null;
+            DocumentModelDetails result = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("operationId".equals(fieldName)) {
+                    operationId = reader.getString();
+                } else if ("status".equals(fieldName)) {
+                    status = OperationStatus.fromString(reader.getString());
+                } else if ("createdDateTime".equals(fieldName)) {
+                    createdDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastUpdatedDateTime".equals(fieldName)) {
+                    lastUpdatedDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("resourceLocation".equals(fieldName)) {
+                    resourceLocation = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = OperationKind.fromString(reader.getString());
+                } else if ("percentCompleted".equals(fieldName)) {
+                    percentCompleted = reader.getNullable(JsonReader::getInt);
+                } else if ("apiVersion".equals(fieldName)) {
+                    apiVersion = reader.getString();
+                } else if ("tags".equals(fieldName)) {
+                    tags = reader.readMap(reader1 -> reader1.getString());
+                } else if ("error".equals(fieldName)) {
+                    error = Error.fromJson(reader);
+                } else if ("result".equals(fieldName)) {
+                    result = DocumentModelDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentModelCopyToOperationDetails deserializedDocumentModelCopyToOperationDetails
+                = new DocumentModelCopyToOperationDetails(status, createdDateTime, lastUpdatedDateTime,
+                    resourceLocation);
+            deserializedDocumentModelCopyToOperationDetails.setOperationId(operationId);
+            deserializedDocumentModelCopyToOperationDetails.setKind(kind);
+            deserializedDocumentModelCopyToOperationDetails.setPercentCompleted(percentCompleted);
+            deserializedDocumentModelCopyToOperationDetails.setApiVersion(apiVersion);
+            deserializedDocumentModelCopyToOperationDetails.setTags(tags);
+            deserializedDocumentModelCopyToOperationDetails.setError(error);
+            deserializedDocumentModelCopyToOperationDetails.result = result;
+
+            return deserializedDocumentModelCopyToOperationDetails;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelDetails.java
index 34c3d518297f..bcf61e1b00c5 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentModelDetails.java
@@ -6,9 +6,13 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
 
@@ -16,84 +20,73 @@
  * Document model info.
  */
 @Immutable
-public final class DocumentModelDetails {
+public final class DocumentModelDetails implements JsonSerializable {
     /*
      * Unique document model name.
      */
     @Generated
-    @JsonProperty(value = "modelId", access = JsonProperty.Access.WRITE_ONLY)
     private String modelId;
 
     /*
      * Document model description.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * Date and time (UTC) when the document model was created.
      */
     @Generated
-    @JsonProperty(value = "createdDateTime")
-    private OffsetDateTime createdDateTime;
+    private final OffsetDateTime createdDateTime;
 
     /*
      * Date and time (UTC) when the document model will expire.
      */
     @Generated
-    @JsonProperty(value = "expirationDateTime")
     private OffsetDateTime expirationDateTime;
 
     /*
      * API version used to create this document model.
      */
     @Generated
-    @JsonProperty(value = "apiVersion")
     private String apiVersion;
 
     /*
      * List of key-value tag attributes associated with the document model.
      */
     @Generated
-    @JsonProperty(value = "tags")
     private Map tags;
 
     /*
      * Custom document model build mode.
      */
     @Generated
-    @JsonProperty(value = "buildMode")
     private DocumentBuildMode buildMode;
 
     /*
-     * Azure Blob Storage location containing the training data. Either
+     * Azure Blob Storage location containing the training data.  Either
      * azureBlobSource or azureBlobFileListSource must be specified.
      */
     @Generated
-    @JsonProperty(value = "azureBlobSource")
     private AzureBlobContentSource azureBlobSource;
 
     /*
-     * Azure Blob Storage file list specifying the training data. Either
+     * Azure Blob Storage file list specifying the training data.  Either
      * azureBlobSource or azureBlobFileListSource must be specified.
      */
     @Generated
-    @JsonProperty(value = "azureBlobFileListSource")
     private AzureBlobFileListContentSource azureBlobFileListSource;
 
     /*
      * Supported document types.
      */
     @Generated
-    @JsonProperty(value = "docTypes")
     private Map docTypes;
 
     /*
      * List of warnings encountered while building the model.
      */
     @Generated
-    @JsonProperty(value = "warnings")
     private List warnings;
 
     /**
@@ -102,8 +95,7 @@ public final class DocumentModelDetails {
      * @param createdDateTime the createdDateTime value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentModelDetails(@JsonProperty(value = "createdDateTime") OffsetDateTime createdDateTime) {
+    private DocumentModelDetails(OffsetDateTime createdDateTime) {
         this.createdDateTime = createdDateTime;
     }
 
@@ -178,7 +170,7 @@ public DocumentBuildMode getBuildMode() {
     }
 
     /**
-     * Get the azureBlobSource property: Azure Blob Storage location containing the training data. Either
+     * Get the azureBlobSource property: Azure Blob Storage location containing the training data.  Either
      * azureBlobSource or azureBlobFileListSource must be specified.
      * 
      * @return the azureBlobSource value.
@@ -189,7 +181,7 @@ public AzureBlobContentSource getAzureBlobSource() {
     }
 
     /**
-     * Get the azureBlobFileListSource property: Azure Blob Storage file list specifying the training data. Either
+     * Get the azureBlobFileListSource property: Azure Blob Storage file list specifying the training data.  Either
      * azureBlobSource or azureBlobFileListSource must be specified.
      * 
      * @return the azureBlobFileListSource value.
@@ -218,4 +210,98 @@ public Map getDocTypes() {
     public List getWarnings() {
         return this.warnings;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("createdDateTime",
+            this.createdDateTime == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.createdDateTime));
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("expirationDateTime",
+            this.expirationDateTime == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.expirationDateTime));
+        jsonWriter.writeStringField("apiVersion", this.apiVersion);
+        jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("buildMode", this.buildMode == null ? null : this.buildMode.toString());
+        jsonWriter.writeJsonField("azureBlobSource", this.azureBlobSource);
+        jsonWriter.writeJsonField("azureBlobFileListSource", this.azureBlobFileListSource);
+        jsonWriter.writeMapField("docTypes", this.docTypes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("warnings", this.warnings, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentModelDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentModelDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentModelDetails.
+     */
+    @Generated
+    public static DocumentModelDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String modelId = null;
+            OffsetDateTime createdDateTime = null;
+            String description = null;
+            OffsetDateTime expirationDateTime = null;
+            String apiVersion = null;
+            Map tags = null;
+            DocumentBuildMode buildMode = null;
+            AzureBlobContentSource azureBlobSource = null;
+            AzureBlobFileListContentSource azureBlobFileListSource = null;
+            Map docTypes = null;
+            List warnings = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("modelId".equals(fieldName)) {
+                    modelId = reader.getString();
+                } else if ("createdDateTime".equals(fieldName)) {
+                    createdDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("expirationDateTime".equals(fieldName)) {
+                    expirationDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("apiVersion".equals(fieldName)) {
+                    apiVersion = reader.getString();
+                } else if ("tags".equals(fieldName)) {
+                    tags = reader.readMap(reader1 -> reader1.getString());
+                } else if ("buildMode".equals(fieldName)) {
+                    buildMode = DocumentBuildMode.fromString(reader.getString());
+                } else if ("azureBlobSource".equals(fieldName)) {
+                    azureBlobSource = AzureBlobContentSource.fromJson(reader);
+                } else if ("azureBlobFileListSource".equals(fieldName)) {
+                    azureBlobFileListSource = AzureBlobFileListContentSource.fromJson(reader);
+                } else if ("docTypes".equals(fieldName)) {
+                    docTypes = reader.readMap(reader1 -> DocumentTypeDetails.fromJson(reader1));
+                } else if ("warnings".equals(fieldName)) {
+                    warnings = reader.readArray(reader1 -> Warning.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentModelDetails deserializedDocumentModelDetails = new DocumentModelDetails(createdDateTime);
+            deserializedDocumentModelDetails.modelId = modelId;
+            deserializedDocumentModelDetails.description = description;
+            deserializedDocumentModelDetails.expirationDateTime = expirationDateTime;
+            deserializedDocumentModelDetails.apiVersion = apiVersion;
+            deserializedDocumentModelDetails.tags = tags;
+            deserializedDocumentModelDetails.buildMode = buildMode;
+            deserializedDocumentModelDetails.azureBlobSource = azureBlobSource;
+            deserializedDocumentModelDetails.azureBlobFileListSource = azureBlobFileListSource;
+            deserializedDocumentModelDetails.docTypes = docTypes;
+            deserializedDocumentModelDetails.warnings = warnings;
+
+            return deserializedDocumentModelDetails;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentPage.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentPage.java
index b7368d85ab01..4b7f1d4cdfa2 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentPage.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentPage.java
@@ -6,42 +6,41 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Content and layout elements extracted from a page from the input.
  */
 @Immutable
-public final class DocumentPage {
+public final class DocumentPage implements JsonSerializable {
     /*
      * 1-based page number in the input document.
      */
     @Generated
-    @JsonProperty(value = "pageNumber")
-    private int pageNumber;
+    private final int pageNumber;
 
     /*
      * The general orientation of the content in clockwise direction, measured in
      * degrees between (-180, 180].
      */
     @Generated
-    @JsonProperty(value = "angle")
     private Double angle;
 
     /*
      * The width of the image/PDF in pixels/inches, respectively.
      */
     @Generated
-    @JsonProperty(value = "width")
     private Double width;
 
     /*
      * The height of the image/PDF in pixels/inches, respectively.
      */
     @Generated
-    @JsonProperty(value = "height")
     private Double height;
 
     /*
@@ -49,28 +48,24 @@ public final class DocumentPage {
      * unit is "pixel". For PDF, the unit is "inch".
      */
     @Generated
-    @JsonProperty(value = "unit")
     private LengthUnit unit;
 
     /*
      * Location of the page in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /*
      * Extracted words from the page.
      */
     @Generated
-    @JsonProperty(value = "words")
     private List words;
 
     /*
      * Extracted selection marks from the page.
      */
     @Generated
-    @JsonProperty(value = "selectionMarks")
     private List selectionMarks;
 
     /*
@@ -78,21 +73,18 @@ public final class DocumentPage {
      * elements.
      */
     @Generated
-    @JsonProperty(value = "lines")
     private List lines;
 
     /*
      * Extracted barcodes from the page.
      */
     @Generated
-    @JsonProperty(value = "barcodes")
     private List barcodes;
 
     /*
      * Extracted formulas from the page.
      */
     @Generated
-    @JsonProperty(value = "formulas")
     private List formulas;
 
     /**
@@ -102,9 +94,7 @@ public final class DocumentPage {
      * @param spans the spans value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentPage(@JsonProperty(value = "pageNumber") int pageNumber,
-        @JsonProperty(value = "spans") List spans) {
+    private DocumentPage(int pageNumber, List spans) {
         this.pageNumber = pageNumber;
         this.spans = spans;
     }
@@ -221,4 +211,93 @@ public List getBarcodes() {
     public List getFormulas() {
         return this.formulas;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeIntField("pageNumber", this.pageNumber);
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeNumberField("angle", this.angle);
+        jsonWriter.writeNumberField("width", this.width);
+        jsonWriter.writeNumberField("height", this.height);
+        jsonWriter.writeStringField("unit", this.unit == null ? null : this.unit.toString());
+        jsonWriter.writeArrayField("words", this.words, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("selectionMarks", this.selectionMarks,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("lines", this.lines, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("barcodes", this.barcodes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("formulas", this.formulas, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentPage from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentPage if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentPage.
+     */
+    @Generated
+    public static DocumentPage fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            int pageNumber = 0;
+            List spans = null;
+            Double angle = null;
+            Double width = null;
+            Double height = null;
+            LengthUnit unit = null;
+            List words = null;
+            List selectionMarks = null;
+            List lines = null;
+            List barcodes = null;
+            List formulas = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("pageNumber".equals(fieldName)) {
+                    pageNumber = reader.getInt();
+                } else if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("angle".equals(fieldName)) {
+                    angle = reader.getNullable(JsonReader::getDouble);
+                } else if ("width".equals(fieldName)) {
+                    width = reader.getNullable(JsonReader::getDouble);
+                } else if ("height".equals(fieldName)) {
+                    height = reader.getNullable(JsonReader::getDouble);
+                } else if ("unit".equals(fieldName)) {
+                    unit = LengthUnit.fromString(reader.getString());
+                } else if ("words".equals(fieldName)) {
+                    words = reader.readArray(reader1 -> DocumentWord.fromJson(reader1));
+                } else if ("selectionMarks".equals(fieldName)) {
+                    selectionMarks = reader.readArray(reader1 -> DocumentSelectionMark.fromJson(reader1));
+                } else if ("lines".equals(fieldName)) {
+                    lines = reader.readArray(reader1 -> DocumentLine.fromJson(reader1));
+                } else if ("barcodes".equals(fieldName)) {
+                    barcodes = reader.readArray(reader1 -> DocumentBarcode.fromJson(reader1));
+                } else if ("formulas".equals(fieldName)) {
+                    formulas = reader.readArray(reader1 -> DocumentFormula.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentPage deserializedDocumentPage = new DocumentPage(pageNumber, spans);
+            deserializedDocumentPage.angle = angle;
+            deserializedDocumentPage.width = width;
+            deserializedDocumentPage.height = height;
+            deserializedDocumentPage.unit = unit;
+            deserializedDocumentPage.words = words;
+            deserializedDocumentPage.selectionMarks = selectionMarks;
+            deserializedDocumentPage.lines = lines;
+            deserializedDocumentPage.barcodes = barcodes;
+            deserializedDocumentPage.formulas = formulas;
+
+            return deserializedDocumentPage;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentParagraph.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentParagraph.java
index 78d7404b0ab3..d5ac48773d41 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentParagraph.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentParagraph.java
@@ -6,8 +6,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -15,34 +18,30 @@
  * alignment and spacing.
  */
 @Immutable
-public final class DocumentParagraph {
+public final class DocumentParagraph implements JsonSerializable {
     /*
      * Semantic role of the paragraph.
      */
     @Generated
-    @JsonProperty(value = "role")
     private ParagraphRole role;
 
     /*
      * Concatenated content of the paragraph in reading order.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private String content;
+    private final String content;
 
     /*
      * Bounding regions covering the paragraph.
      */
     @Generated
-    @JsonProperty(value = "boundingRegions")
     private List boundingRegions;
 
     /*
      * Location of the paragraph in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /**
      * Creates an instance of DocumentParagraph class.
@@ -51,9 +50,7 @@ public final class DocumentParagraph {
      * @param spans the spans value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentParagraph(@JsonProperty(value = "content") String content,
-        @JsonProperty(value = "spans") List spans) {
+    private DocumentParagraph(String content, List spans) {
         this.content = content;
         this.spans = spans;
     }
@@ -97,4 +94,58 @@ public List getBoundingRegions() {
     public List getSpans() {
         return this.spans;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("content", this.content);
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("role", this.role == null ? null : this.role.toString());
+        jsonWriter.writeArrayField("boundingRegions", this.boundingRegions,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentParagraph from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentParagraph if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentParagraph.
+     */
+    @Generated
+    public static DocumentParagraph fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String content = null;
+            List spans = null;
+            ParagraphRole role = null;
+            List boundingRegions = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("content".equals(fieldName)) {
+                    content = reader.getString();
+                } else if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("role".equals(fieldName)) {
+                    role = ParagraphRole.fromString(reader.getString());
+                } else if ("boundingRegions".equals(fieldName)) {
+                    boundingRegions = reader.readArray(reader1 -> BoundingRegion.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentParagraph deserializedDocumentParagraph = new DocumentParagraph(content, spans);
+            deserializedDocumentParagraph.role = role;
+            deserializedDocumentParagraph.boundingRegions = boundingRegions;
+
+            return deserializedDocumentParagraph;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSection.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSection.java
index 74b92853346b..a758633ad286 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSection.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSection.java
@@ -6,27 +6,28 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * An object representing a section in the document.
  */
 @Immutable
-public final class DocumentSection {
+public final class DocumentSection implements JsonSerializable {
     /*
      * Location of the section in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /*
      * Child elements of the section.
      */
     @Generated
-    @JsonProperty(value = "elements")
     private List elements;
 
     /**
@@ -35,8 +36,7 @@ public final class DocumentSection {
      * @param spans the spans value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentSection(@JsonProperty(value = "spans") List spans) {
+    private DocumentSection(List spans) {
         this.spans = spans;
     }
 
@@ -59,4 +59,48 @@ public List getSpans() {
     public List getElements() {
         return this.elements;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("elements", this.elements, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentSection from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentSection if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentSection.
+     */
+    @Generated
+    public static DocumentSection fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List spans = null;
+            List elements = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("elements".equals(fieldName)) {
+                    elements = reader.readArray(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentSection deserializedDocumentSection = new DocumentSection(spans);
+            deserializedDocumentSection.elements = elements;
+
+            return deserializedDocumentSection;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSelectionMark.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSelectionMark.java
index f1a3f5e072e5..0097ac4dedf7 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSelectionMark.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSelectionMark.java
@@ -6,8 +6,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -15,13 +18,12 @@
  * elements indicating a selection.
  */
 @Immutable
-public final class DocumentSelectionMark {
+public final class DocumentSelectionMark implements JsonSerializable {
     /*
      * State of the selection mark.
      */
     @Generated
-    @JsonProperty(value = "state")
-    private DocumentSelectionMarkState state;
+    private final DocumentSelectionMarkState state;
 
     /*
      * Bounding polygon of the selection mark, with coordinates specified relative
@@ -30,22 +32,19 @@ public final class DocumentSelectionMark {
      * to the element orientation.
      */
     @Generated
-    @JsonProperty(value = "polygon")
     private List polygon;
 
     /*
      * Location of the selection mark in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "span")
-    private DocumentSpan span;
+    private final DocumentSpan span;
 
     /*
      * Confidence of correctly extracting the selection mark.
      */
     @Generated
-    @JsonProperty(value = "confidence")
-    private double confidence;
+    private final double confidence;
 
     /**
      * Creates an instance of DocumentSelectionMark class.
@@ -55,9 +54,7 @@ public final class DocumentSelectionMark {
      * @param confidence the confidence value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentSelectionMark(@JsonProperty(value = "state") DocumentSelectionMarkState state,
-        @JsonProperty(value = "span") DocumentSpan span, @JsonProperty(value = "confidence") double confidence) {
+    private DocumentSelectionMark(DocumentSelectionMarkState state, DocumentSpan span, double confidence) {
         this.state = state;
         this.span = span;
         this.confidence = confidence;
@@ -105,4 +102,57 @@ public DocumentSpan getSpan() {
     public double getConfidence() {
         return this.confidence;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("state", this.state == null ? null : this.state.toString());
+        jsonWriter.writeJsonField("span", this.span);
+        jsonWriter.writeDoubleField("confidence", this.confidence);
+        jsonWriter.writeArrayField("polygon", this.polygon, (writer, element) -> writer.writeDouble(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentSelectionMark from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentSelectionMark if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentSelectionMark.
+     */
+    @Generated
+    public static DocumentSelectionMark fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DocumentSelectionMarkState state = null;
+            DocumentSpan span = null;
+            double confidence = 0.0;
+            List polygon = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("state".equals(fieldName)) {
+                    state = DocumentSelectionMarkState.fromString(reader.getString());
+                } else if ("span".equals(fieldName)) {
+                    span = DocumentSpan.fromJson(reader);
+                } else if ("confidence".equals(fieldName)) {
+                    confidence = reader.getDouble();
+                } else if ("polygon".equals(fieldName)) {
+                    polygon = reader.readArray(reader1 -> reader1.getDouble());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentSelectionMark deserializedDocumentSelectionMark
+                = new DocumentSelectionMark(state, span, confidence);
+            deserializedDocumentSelectionMark.polygon = polygon;
+
+            return deserializedDocumentSelectionMark;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSelectionMarkState.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSelectionMarkState.java
index 1c359f354606..9785af8119ac 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSelectionMarkState.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSelectionMarkState.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -43,7 +42,6 @@ public DocumentSelectionMarkState() {
      * @return the corresponding DocumentSelectionMarkState.
      */
     @Generated
-    @JsonCreator
     public static DocumentSelectionMarkState fromString(String name) {
         return fromString(name, DocumentSelectionMarkState.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSignatureType.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSignatureType.java
index e74972c9fc83..1178ff997092 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSignatureType.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSignatureType.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public DocumentSignatureType() {
      * @return the corresponding DocumentSignatureType.
      */
     @Generated
-    @JsonCreator
     public static DocumentSignatureType fromString(String name) {
         return fromString(name, DocumentSignatureType.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSpan.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSpan.java
index 2f68e0e0d5fc..0259fe38be03 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSpan.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentSpan.java
@@ -6,28 +6,29 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Contiguous region of the concatenated content property, specified as an offset
  * and length.
  */
 @Immutable
-public final class DocumentSpan {
+public final class DocumentSpan implements JsonSerializable {
     /*
      * Zero-based index of the content represented by the span.
      */
     @Generated
-    @JsonProperty(value = "offset")
-    private int offset;
+    private final int offset;
 
     /*
      * Number of characters in the content represented by the span.
      */
     @Generated
-    @JsonProperty(value = "length")
-    private int length;
+    private final int length;
 
     /**
      * Creates an instance of DocumentSpan class.
@@ -36,8 +37,7 @@ public final class DocumentSpan {
      * @param length the length value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentSpan(@JsonProperty(value = "offset") int offset, @JsonProperty(value = "length") int length) {
+    private DocumentSpan(int offset, int length) {
         this.offset = offset;
         this.length = length;
     }
@@ -61,4 +61,45 @@ public int getOffset() {
     public int getLength() {
         return this.length;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeIntField("offset", this.offset);
+        jsonWriter.writeIntField("length", this.length);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentSpan from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentSpan if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentSpan.
+     */
+    @Generated
+    public static DocumentSpan fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            int offset = 0;
+            int length = 0;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("offset".equals(fieldName)) {
+                    offset = reader.getInt();
+                } else if ("length".equals(fieldName)) {
+                    length = reader.getInt();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new DocumentSpan(offset, length);
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentStyle.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentStyle.java
index 192323533e46..e160d75753fe 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentStyle.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentStyle.java
@@ -6,20 +6,22 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * An object representing observed text styles.
  */
 @Immutable
-public final class DocumentStyle {
+public final class DocumentStyle implements JsonSerializable {
     /*
      * Is content handwritten?
      */
     @Generated
-    @JsonProperty(value = "isHandwritten")
     private Boolean isHandwritten;
 
     /*
@@ -27,50 +29,43 @@ public final class DocumentStyle {
      * fallback fonts following CSS convention (ex. 'Arial, sans-serif').
      */
     @Generated
-    @JsonProperty(value = "similarFontFamily")
     private String similarFontFamily;
 
     /*
      * Font style.
      */
     @Generated
-    @JsonProperty(value = "fontStyle")
     private FontStyle fontStyle;
 
     /*
      * Font weight.
      */
     @Generated
-    @JsonProperty(value = "fontWeight")
     private FontWeight fontWeight;
 
     /*
      * Foreground color in #rrggbb hexadecimal format.
      */
     @Generated
-    @JsonProperty(value = "color")
     private String color;
 
     /*
      * Background color in #rrggbb hexadecimal format..
      */
     @Generated
-    @JsonProperty(value = "backgroundColor")
     private String backgroundColor;
 
     /*
      * Location of the text elements in the concatenated content the style applies to.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /*
      * Confidence of correctly identifying the style.
      */
     @Generated
-    @JsonProperty(value = "confidence")
-    private double confidence;
+    private final double confidence;
 
     /**
      * Creates an instance of DocumentStyle class.
@@ -79,9 +74,7 @@ public final class DocumentStyle {
      * @param confidence the confidence value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentStyle(@JsonProperty(value = "spans") List spans,
-        @JsonProperty(value = "confidence") double confidence) {
+    private DocumentStyle(List spans, double confidence) {
         this.spans = spans;
         this.confidence = confidence;
     }
@@ -97,8 +90,7 @@ public Boolean isHandwritten() {
     }
 
     /**
-     * Get the similarFontFamily property: Visually most similar font from among the set of supported font families,
-     * with
+     * Get the similarFontFamily property: Visually most similar font from among the set of supported font families, with
      * fallback fonts following CSS convention (ex. 'Arial, sans-serif').
      * 
      * @return the similarFontFamily value.
@@ -167,4 +159,77 @@ public List getSpans() {
     public double getConfidence() {
         return this.confidence;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeDoubleField("confidence", this.confidence);
+        jsonWriter.writeBooleanField("isHandwritten", this.isHandwritten);
+        jsonWriter.writeStringField("similarFontFamily", this.similarFontFamily);
+        jsonWriter.writeStringField("fontStyle", this.fontStyle == null ? null : this.fontStyle.toString());
+        jsonWriter.writeStringField("fontWeight", this.fontWeight == null ? null : this.fontWeight.toString());
+        jsonWriter.writeStringField("color", this.color);
+        jsonWriter.writeStringField("backgroundColor", this.backgroundColor);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentStyle from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentStyle if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentStyle.
+     */
+    @Generated
+    public static DocumentStyle fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List spans = null;
+            double confidence = 0.0;
+            Boolean isHandwritten = null;
+            String similarFontFamily = null;
+            FontStyle fontStyle = null;
+            FontWeight fontWeight = null;
+            String color = null;
+            String backgroundColor = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("confidence".equals(fieldName)) {
+                    confidence = reader.getDouble();
+                } else if ("isHandwritten".equals(fieldName)) {
+                    isHandwritten = reader.getNullable(JsonReader::getBoolean);
+                } else if ("similarFontFamily".equals(fieldName)) {
+                    similarFontFamily = reader.getString();
+                } else if ("fontStyle".equals(fieldName)) {
+                    fontStyle = FontStyle.fromString(reader.getString());
+                } else if ("fontWeight".equals(fieldName)) {
+                    fontWeight = FontWeight.fromString(reader.getString());
+                } else if ("color".equals(fieldName)) {
+                    color = reader.getString();
+                } else if ("backgroundColor".equals(fieldName)) {
+                    backgroundColor = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentStyle deserializedDocumentStyle = new DocumentStyle(spans, confidence);
+            deserializedDocumentStyle.isHandwritten = isHandwritten;
+            deserializedDocumentStyle.similarFontFamily = similarFontFamily;
+            deserializedDocumentStyle.fontStyle = fontStyle;
+            deserializedDocumentStyle.fontWeight = fontWeight;
+            deserializedDocumentStyle.color = color;
+            deserializedDocumentStyle.backgroundColor = backgroundColor;
+
+            return deserializedDocumentStyle;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTable.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTable.java
index 354087d85178..29531df56bac 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTable.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTable.java
@@ -6,62 +6,58 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * A table object consisting table cells arranged in a rectangular layout.
  */
 @Immutable
-public final class DocumentTable {
+public final class DocumentTable implements JsonSerializable {
     /*
      * Number of rows in the table.
      */
     @Generated
-    @JsonProperty(value = "rowCount")
-    private int rowCount;
+    private final int rowCount;
 
     /*
      * Number of columns in the table.
      */
     @Generated
-    @JsonProperty(value = "columnCount")
-    private int columnCount;
+    private final int columnCount;
 
     /*
      * Cells contained within the table.
      */
     @Generated
-    @JsonProperty(value = "cells")
-    private List cells;
+    private final List cells;
 
     /*
      * Bounding regions covering the table.
      */
     @Generated
-    @JsonProperty(value = "boundingRegions")
     private List boundingRegions;
 
     /*
      * Location of the table in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /*
      * Caption associated with the table.
      */
     @Generated
-    @JsonProperty(value = "caption")
     private DocumentCaption caption;
 
     /*
      * List of footnotes associated with the table.
      */
     @Generated
-    @JsonProperty(value = "footnotes")
     private List footnotes;
 
     /**
@@ -73,11 +69,7 @@ public final class DocumentTable {
      * @param spans the spans value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentTable(@JsonProperty(value = "rowCount") int rowCount,
-        @JsonProperty(value = "columnCount") int columnCount,
-        @JsonProperty(value = "cells") List cells,
-        @JsonProperty(value = "spans") List spans) {
+    private DocumentTable(int rowCount, int columnCount, List cells, List spans) {
         this.rowCount = rowCount;
         this.columnCount = columnCount;
         this.cells = cells;
@@ -153,4 +145,71 @@ public DocumentCaption getCaption() {
     public List getFootnotes() {
         return this.footnotes;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeIntField("rowCount", this.rowCount);
+        jsonWriter.writeIntField("columnCount", this.columnCount);
+        jsonWriter.writeArrayField("cells", this.cells, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("boundingRegions", this.boundingRegions,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("caption", this.caption);
+        jsonWriter.writeArrayField("footnotes", this.footnotes, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentTable from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentTable if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentTable.
+     */
+    @Generated
+    public static DocumentTable fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            int rowCount = 0;
+            int columnCount = 0;
+            List cells = null;
+            List spans = null;
+            List boundingRegions = null;
+            DocumentCaption caption = null;
+            List footnotes = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("rowCount".equals(fieldName)) {
+                    rowCount = reader.getInt();
+                } else if ("columnCount".equals(fieldName)) {
+                    columnCount = reader.getInt();
+                } else if ("cells".equals(fieldName)) {
+                    cells = reader.readArray(reader1 -> DocumentTableCell.fromJson(reader1));
+                } else if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("boundingRegions".equals(fieldName)) {
+                    boundingRegions = reader.readArray(reader1 -> BoundingRegion.fromJson(reader1));
+                } else if ("caption".equals(fieldName)) {
+                    caption = DocumentCaption.fromJson(reader);
+                } else if ("footnotes".equals(fieldName)) {
+                    footnotes = reader.readArray(reader1 -> DocumentFootnote.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentTable deserializedDocumentTable = new DocumentTable(rowCount, columnCount, cells, spans);
+            deserializedDocumentTable.boundingRegions = boundingRegions;
+            deserializedDocumentTable.caption = caption;
+            deserializedDocumentTable.footnotes = footnotes;
+
+            return deserializedDocumentTable;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTableCell.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTableCell.java
index df50a1ea146d..04fa50179b75 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTableCell.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTableCell.java
@@ -6,76 +6,70 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * An object representing the location and content of a table cell.
  */
 @Immutable
-public final class DocumentTableCell {
+public final class DocumentTableCell implements JsonSerializable {
     /*
      * Table cell kind.
      */
     @Generated
-    @JsonProperty(value = "kind")
     private DocumentTableCellKind kind;
 
     /*
      * Row index of the cell.
      */
     @Generated
-    @JsonProperty(value = "rowIndex")
-    private int rowIndex;
+    private final int rowIndex;
 
     /*
      * Column index of the cell.
      */
     @Generated
-    @JsonProperty(value = "columnIndex")
-    private int columnIndex;
+    private final int columnIndex;
 
     /*
      * Number of rows spanned by this cell.
      */
     @Generated
-    @JsonProperty(value = "rowSpan")
     private Integer rowSpan;
 
     /*
      * Number of columns spanned by this cell.
      */
     @Generated
-    @JsonProperty(value = "columnSpan")
     private Integer columnSpan;
 
     /*
      * Concatenated content of the table cell in reading order.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private String content;
+    private final String content;
 
     /*
      * Bounding regions covering the table cell.
      */
     @Generated
-    @JsonProperty(value = "boundingRegions")
     private List boundingRegions;
 
     /*
      * Location of the table cell in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "spans")
-    private List spans;
+    private final List spans;
 
     /*
      * Child elements of the table cell.
      */
     @Generated
-    @JsonProperty(value = "elements")
     private List elements;
 
     /**
@@ -87,10 +81,7 @@ public final class DocumentTableCell {
      * @param spans the spans value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentTableCell(@JsonProperty(value = "rowIndex") int rowIndex,
-        @JsonProperty(value = "columnIndex") int columnIndex, @JsonProperty(value = "content") String content,
-        @JsonProperty(value = "spans") List spans) {
+    private DocumentTableCell(int rowIndex, int columnIndex, String content, List spans) {
         this.rowIndex = rowIndex;
         this.columnIndex = columnIndex;
         this.content = content;
@@ -186,4 +177,82 @@ public List getSpans() {
     public List getElements() {
         return this.elements;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeIntField("rowIndex", this.rowIndex);
+        jsonWriter.writeIntField("columnIndex", this.columnIndex);
+        jsonWriter.writeStringField("content", this.content);
+        jsonWriter.writeArrayField("spans", this.spans, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString());
+        jsonWriter.writeNumberField("rowSpan", this.rowSpan);
+        jsonWriter.writeNumberField("columnSpan", this.columnSpan);
+        jsonWriter.writeArrayField("boundingRegions", this.boundingRegions,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("elements", this.elements, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentTableCell from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentTableCell if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentTableCell.
+     */
+    @Generated
+    public static DocumentTableCell fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            int rowIndex = 0;
+            int columnIndex = 0;
+            String content = null;
+            List spans = null;
+            DocumentTableCellKind kind = null;
+            Integer rowSpan = null;
+            Integer columnSpan = null;
+            List boundingRegions = null;
+            List elements = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("rowIndex".equals(fieldName)) {
+                    rowIndex = reader.getInt();
+                } else if ("columnIndex".equals(fieldName)) {
+                    columnIndex = reader.getInt();
+                } else if ("content".equals(fieldName)) {
+                    content = reader.getString();
+                } else if ("spans".equals(fieldName)) {
+                    spans = reader.readArray(reader1 -> DocumentSpan.fromJson(reader1));
+                } else if ("kind".equals(fieldName)) {
+                    kind = DocumentTableCellKind.fromString(reader.getString());
+                } else if ("rowSpan".equals(fieldName)) {
+                    rowSpan = reader.getNullable(JsonReader::getInt);
+                } else if ("columnSpan".equals(fieldName)) {
+                    columnSpan = reader.getNullable(JsonReader::getInt);
+                } else if ("boundingRegions".equals(fieldName)) {
+                    boundingRegions = reader.readArray(reader1 -> BoundingRegion.fromJson(reader1));
+                } else if ("elements".equals(fieldName)) {
+                    elements = reader.readArray(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentTableCell deserializedDocumentTableCell
+                = new DocumentTableCell(rowIndex, columnIndex, content, spans);
+            deserializedDocumentTableCell.kind = kind;
+            deserializedDocumentTableCell.rowSpan = rowSpan;
+            deserializedDocumentTableCell.columnSpan = columnSpan;
+            deserializedDocumentTableCell.boundingRegions = boundingRegions;
+            deserializedDocumentTableCell.elements = elements;
+
+            return deserializedDocumentTableCell;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTableCellKind.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTableCellKind.java
index 3130892508c2..2657e27bcbb4 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTableCellKind.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTableCellKind.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -60,7 +59,6 @@ public DocumentTableCellKind() {
      * @return the corresponding DocumentTableCellKind.
      */
     @Generated
-    @JsonCreator
     public static DocumentTableCellKind fromString(String name) {
         return fromString(name, DocumentTableCellKind.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTypeDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTypeDetails.java
index 80549b1681f3..a918fe92050c 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTypeDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentTypeDetails.java
@@ -6,41 +6,40 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * Document type info.
  */
 @Immutable
-public final class DocumentTypeDetails {
+public final class DocumentTypeDetails implements JsonSerializable {
     /*
      * Document model description.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * Custom document model build mode.
      */
     @Generated
-    @JsonProperty(value = "buildMode")
     private DocumentBuildMode buildMode;
 
     /*
      * Description of the document semantic schema using a JSON Schema style syntax.
      */
     @Generated
-    @JsonProperty(value = "fieldSchema")
-    private Map fieldSchema;
+    private final Map fieldSchema;
 
     /*
      * Estimated confidence for each field.
      */
     @Generated
-    @JsonProperty(value = "fieldConfidence")
     private Map fieldConfidence;
 
     /**
@@ -49,8 +48,7 @@ public final class DocumentTypeDetails {
      * @param fieldSchema the fieldSchema value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentTypeDetails(@JsonProperty(value = "fieldSchema") Map fieldSchema) {
+    private DocumentTypeDetails(Map fieldSchema) {
         this.fieldSchema = fieldSchema;
     }
 
@@ -93,4 +91,59 @@ public Map getFieldSchema() {
     public Map getFieldConfidence() {
         return this.fieldConfidence;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("fieldSchema", this.fieldSchema, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("buildMode", this.buildMode == null ? null : this.buildMode.toString());
+        jsonWriter.writeMapField("fieldConfidence", this.fieldConfidence,
+            (writer, element) -> writer.writeDouble(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentTypeDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentTypeDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentTypeDetails.
+     */
+    @Generated
+    public static DocumentTypeDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            Map fieldSchema = null;
+            String description = null;
+            DocumentBuildMode buildMode = null;
+            Map fieldConfidence = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("fieldSchema".equals(fieldName)) {
+                    fieldSchema = reader.readMap(reader1 -> DocumentFieldSchema.fromJson(reader1));
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("buildMode".equals(fieldName)) {
+                    buildMode = DocumentBuildMode.fromString(reader.getString());
+                } else if ("fieldConfidence".equals(fieldName)) {
+                    fieldConfidence = reader.readMap(reader1 -> reader1.getDouble());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentTypeDetails deserializedDocumentTypeDetails = new DocumentTypeDetails(fieldSchema);
+            deserializedDocumentTypeDetails.description = description;
+            deserializedDocumentTypeDetails.buildMode = buildMode;
+            deserializedDocumentTypeDetails.fieldConfidence = fieldConfidence;
+
+            return deserializedDocumentTypeDetails;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentWord.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentWord.java
index ac7e0aa2af22..1f85f588d6dd 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentWord.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/DocumentWord.java
@@ -6,23 +6,25 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
- * A word object consisting of a contiguous sequence of characters. For non-space
+ * A word object consisting of a contiguous sequence of characters.  For non-space
  * delimited languages, such as Chinese, Japanese, and Korean, each character is
  * represented as its own word.
  */
 @Immutable
-public final class DocumentWord {
+public final class DocumentWord implements JsonSerializable {
     /*
      * Text content of the word.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private String content;
+    private final String content;
 
     /*
      * Bounding polygon of the word, with coordinates specified relative to the
@@ -31,22 +33,19 @@ public final class DocumentWord {
      * element orientation.
      */
     @Generated
-    @JsonProperty(value = "polygon")
     private List polygon;
 
     /*
      * Location of the word in the reading order concatenated content.
      */
     @Generated
-    @JsonProperty(value = "span")
-    private DocumentSpan span;
+    private final DocumentSpan span;
 
     /*
      * Confidence of correctly extracting the word.
      */
     @Generated
-    @JsonProperty(value = "confidence")
-    private double confidence;
+    private final double confidence;
 
     /**
      * Creates an instance of DocumentWord class.
@@ -56,9 +55,7 @@ public final class DocumentWord {
      * @param confidence the confidence value to set.
      */
     @Generated
-    @JsonCreator
-    private DocumentWord(@JsonProperty(value = "content") String content,
-        @JsonProperty(value = "span") DocumentSpan span, @JsonProperty(value = "confidence") double confidence) {
+    private DocumentWord(String content, DocumentSpan span, double confidence) {
         this.content = content;
         this.span = span;
         this.confidence = confidence;
@@ -106,4 +103,56 @@ public DocumentSpan getSpan() {
     public double getConfidence() {
         return this.confidence;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("content", this.content);
+        jsonWriter.writeJsonField("span", this.span);
+        jsonWriter.writeDoubleField("confidence", this.confidence);
+        jsonWriter.writeArrayField("polygon", this.polygon, (writer, element) -> writer.writeDouble(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentWord from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentWord if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentWord.
+     */
+    @Generated
+    public static DocumentWord fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String content = null;
+            DocumentSpan span = null;
+            double confidence = 0.0;
+            List polygon = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("content".equals(fieldName)) {
+                    content = reader.getString();
+                } else if ("span".equals(fieldName)) {
+                    span = DocumentSpan.fromJson(reader);
+                } else if ("confidence".equals(fieldName)) {
+                    confidence = reader.getDouble();
+                } else if ("polygon".equals(fieldName)) {
+                    polygon = reader.readArray(reader1 -> reader1.getDouble());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DocumentWord deserializedDocumentWord = new DocumentWord(content, span, confidence);
+            deserializedDocumentWord.polygon = polygon;
+
+            return deserializedDocumentWord;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/Error.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/Error.java
index d54dbdc23c3f..47101c69dea1 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/Error.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/Error.java
@@ -6,48 +6,46 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The error object.
  */
 @Immutable
-public final class Error {
+public final class Error implements JsonSerializable {
     /*
      * One of a server-defined set of error codes.
      */
     @Generated
-    @JsonProperty(value = "code")
-    private String code;
+    private final String code;
 
     /*
      * A human-readable representation of the error.
      */
     @Generated
-    @JsonProperty(value = "message")
-    private String message;
+    private final String message;
 
     /*
      * The target of the error.
      */
     @Generated
-    @JsonProperty(value = "target")
     private String target;
 
     /*
      * An array of details about specific errors that led to this reported error.
      */
     @Generated
-    @JsonProperty(value = "details")
     private List details;
 
     /*
      * An object containing more specific information than the current object about the error.
      */
     @Generated
-    @JsonProperty(value = "innererror")
     private InnerError innererror;
 
     /**
@@ -57,8 +55,7 @@ public final class Error {
      * @param message the message value to set.
      */
     @Generated
-    @JsonCreator
-    private Error(@JsonProperty(value = "code") String code, @JsonProperty(value = "message") String message) {
+    private Error(String code, String message) {
         this.code = code;
         this.message = message;
     }
@@ -104,8 +101,7 @@ public List getDetails() {
     }
 
     /**
-     * Get the innererror property: An object containing more specific information than the current object about the
-     * error.
+     * Get the innererror property: An object containing more specific information than the current object about the error.
      * 
      * @return the innererror value.
      */
@@ -113,4 +109,62 @@ public List getDetails() {
     public InnerError getInnererror() {
         return this.innererror;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("code", this.code);
+        jsonWriter.writeStringField("message", this.message);
+        jsonWriter.writeStringField("target", this.target);
+        jsonWriter.writeArrayField("details", this.details, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("innererror", this.innererror);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Error from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Error if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the Error.
+     */
+    @Generated
+    public static Error fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String code = null;
+            String message = null;
+            String target = null;
+            List details = null;
+            InnerError innererror = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("code".equals(fieldName)) {
+                    code = reader.getString();
+                } else if ("message".equals(fieldName)) {
+                    message = reader.getString();
+                } else if ("target".equals(fieldName)) {
+                    target = reader.getString();
+                } else if ("details".equals(fieldName)) {
+                    details = reader.readArray(reader1 -> Error.fromJson(reader1));
+                } else if ("innererror".equals(fieldName)) {
+                    innererror = InnerError.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            Error deserializedError = new Error(code, message);
+            deserializedError.target = target;
+            deserializedError.details = details;
+            deserializedError.innererror = innererror;
+
+            return deserializedError;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/FontStyle.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/FontStyle.java
index 9453bc3d4994..e31d82c6f234 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/FontStyle.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/FontStyle.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public FontStyle() {
      * @return the corresponding FontStyle.
      */
     @Generated
-    @JsonCreator
     public static FontStyle fromString(String name) {
         return fromString(name, FontStyle.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/FontWeight.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/FontWeight.java
index bc77905c2d00..39b2f1e1c86a 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/FontWeight.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/FontWeight.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public FontWeight() {
      * @return the corresponding FontWeight.
      */
     @Generated
-    @JsonCreator
     public static FontWeight fromString(String name) {
         return fromString(name, FontWeight.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/InnerError.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/InnerError.java
index 2b7928d36e75..4d6065533cb5 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/InnerError.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/InnerError.java
@@ -6,32 +6,33 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An object containing more specific information about the error.
  */
 @Immutable
-public final class InnerError {
+public final class InnerError implements JsonSerializable {
     /*
      * One of a server-defined set of error codes.
      */
     @Generated
-    @JsonProperty(value = "code")
     private String code;
 
     /*
      * A human-readable representation of the error.
      */
     @Generated
-    @JsonProperty(value = "message")
     private String message;
 
     /*
      * Inner error.
      */
     @Generated
-    @JsonProperty(value = "innererror")
     private InnerError innererror;
 
     /**
@@ -70,4 +71,47 @@ public String getMessage() {
     public InnerError getInnererror() {
         return this.innererror;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("code", this.code);
+        jsonWriter.writeStringField("message", this.message);
+        jsonWriter.writeJsonField("innererror", this.innererror);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of InnerError from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of InnerError if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the InnerError.
+     */
+    @Generated
+    public static InnerError fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            InnerError deserializedInnerError = new InnerError();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("code".equals(fieldName)) {
+                    deserializedInnerError.code = reader.getString();
+                } else if ("message".equals(fieldName)) {
+                    deserializedInnerError.message = reader.getString();
+                } else if ("innererror".equals(fieldName)) {
+                    deserializedInnerError.innererror = InnerError.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedInnerError;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/LengthUnit.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/LengthUnit.java
index 30ef6445c8f6..1ebce153ae8a 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/LengthUnit.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/LengthUnit.java
@@ -6,12 +6,10 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
- * The unit used by the width, height, and polygon properties. For images, the unit is "pixel". For PDF, the unit is
- * "inch".
+ * The unit used by the width, height, and polygon properties. For images, the unit is "pixel". For PDF, the unit is "inch".
  */
 public final class LengthUnit extends ExpandableStringEnum {
     /**
@@ -43,7 +41,6 @@ public LengthUnit() {
      * @return the corresponding LengthUnit.
      */
     @Generated
-    @JsonCreator
     public static LengthUnit fromString(String name) {
         return fromString(name, LengthUnit.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/OperationDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/OperationDetails.java
index ed602b071ca6..c6564f31f7b6 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/OperationDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/OperationDetails.java
@@ -6,91 +6,78 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Map;
 
 /**
  * Operation info.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "kind",
-    defaultImpl = OperationDetails.class)
-@JsonTypeName("OperationDetails")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "documentModelCompose", value = DocumentModelComposeOperationDetails.class),
-    @JsonSubTypes.Type(name = "documentModelCopyTo", value = DocumentModelCopyToOperationDetails.class),
-    @JsonSubTypes.Type(name = "documentClassifierBuild", value = DocumentClassifierBuildOperationDetails.class),
-    @JsonSubTypes.Type(name = "documentModelBuild", value = DocumentModelBuildOperationDetails.class) })
 @Immutable
-public class OperationDetails {
+public class OperationDetails implements JsonSerializable {
+    /*
+     * Type of operation.
+     */
+    @Generated
+    private OperationKind kind;
+
     /*
      * Operation ID
      */
     @Generated
-    @JsonProperty(value = "operationId", access = JsonProperty.Access.WRITE_ONLY)
     private String operationId;
 
     /*
-     * Operation status. notStarted, running, completed, or failed
+     * Operation status.  notStarted, running, completed, or failed
      */
     @Generated
-    @JsonProperty(value = "status")
-    private OperationStatus status;
+    private final OperationStatus status;
 
     /*
      * Operation progress (0-100).
      */
     @Generated
-    @JsonProperty(value = "percentCompleted")
     private Integer percentCompleted;
 
     /*
      * Date and time (UTC) when the operation was created.
      */
     @Generated
-    @JsonProperty(value = "createdDateTime")
-    private OffsetDateTime createdDateTime;
+    private final OffsetDateTime createdDateTime;
 
     /*
      * Date and time (UTC) when the status was last updated.
      */
     @Generated
-    @JsonProperty(value = "lastUpdatedDateTime")
-    private OffsetDateTime lastUpdatedDateTime;
+    private final OffsetDateTime lastUpdatedDateTime;
 
     /*
      * URL of the resource targeted by this operation.
      */
     @Generated
-    @JsonProperty(value = "resourceLocation")
-    private String resourceLocation;
+    private final String resourceLocation;
 
     /*
      * API version used to create this operation.
      */
     @Generated
-    @JsonProperty(value = "apiVersion")
     private String apiVersion;
 
     /*
      * List of key-value tag attributes associated with the document model.
      */
     @Generated
-    @JsonProperty(value = "tags")
     private Map tags;
 
     /*
      * Encountered error.
      */
     @Generated
-    @JsonProperty(value = "error")
     private Error error;
 
     /**
@@ -102,17 +89,37 @@ public class OperationDetails {
      * @param resourceLocation the resourceLocation value to set.
      */
     @Generated
-    @JsonCreator
-    protected OperationDetails(@JsonProperty(value = "status") OperationStatus status,
-        @JsonProperty(value = "createdDateTime") OffsetDateTime createdDateTime,
-        @JsonProperty(value = "lastUpdatedDateTime") OffsetDateTime lastUpdatedDateTime,
-        @JsonProperty(value = "resourceLocation") String resourceLocation) {
+    protected OperationDetails(OperationStatus status, OffsetDateTime createdDateTime,
+        OffsetDateTime lastUpdatedDateTime, String resourceLocation) {
+        this.kind = OperationKind.fromString("OperationDetails");
         this.status = status;
         this.createdDateTime = createdDateTime;
         this.lastUpdatedDateTime = lastUpdatedDateTime;
         this.resourceLocation = resourceLocation;
     }
 
+    /**
+     * Get the kind property: Type of operation.
+     * 
+     * @return the kind value.
+     */
+    @Generated
+    public OperationKind getKind() {
+        return this.kind;
+    }
+
+    /**
+     * Set the kind property: Type of operation.
+     * 
+     * @param kind the kind value to set.
+     * @return the OperationDetails object itself.
+     */
+    @Generated
+    OperationDetails setKind(OperationKind kind) {
+        this.kind = kind;
+        return this;
+    }
+
     /**
      * Get the operationId property: Operation ID.
      * 
@@ -124,7 +131,19 @@ public String getOperationId() {
     }
 
     /**
-     * Get the status property: Operation status. notStarted, running, completed, or failed.
+     * Set the operationId property: Operation ID.
+     * 
+     * @param operationId the operationId value to set.
+     * @return the OperationDetails object itself.
+     */
+    @Generated
+    OperationDetails setOperationId(String operationId) {
+        this.operationId = operationId;
+        return this;
+    }
+
+    /**
+     * Get the status property: Operation status.  notStarted, running, completed, or failed.
      * 
      * @return the status value.
      */
@@ -143,6 +162,18 @@ public Integer getPercentCompleted() {
         return this.percentCompleted;
     }
 
+    /**
+     * Set the percentCompleted property: Operation progress (0-100).
+     * 
+     * @param percentCompleted the percentCompleted value to set.
+     * @return the OperationDetails object itself.
+     */
+    @Generated
+    OperationDetails setPercentCompleted(Integer percentCompleted) {
+        this.percentCompleted = percentCompleted;
+        return this;
+    }
+
     /**
      * Get the createdDateTime property: Date and time (UTC) when the operation was created.
      * 
@@ -183,6 +214,18 @@ public String getApiVersion() {
         return this.apiVersion;
     }
 
+    /**
+     * Set the apiVersion property: API version used to create this operation.
+     * 
+     * @param apiVersion the apiVersion value to set.
+     * @return the OperationDetails object itself.
+     */
+    @Generated
+    OperationDetails setApiVersion(String apiVersion) {
+        this.apiVersion = apiVersion;
+        return this;
+    }
+
     /**
      * Get the tags property: List of key-value tag attributes associated with the document model.
      * 
@@ -193,6 +236,18 @@ public Map getTags() {
         return this.tags;
     }
 
+    /**
+     * Set the tags property: List of key-value tag attributes associated with the document model.
+     * 
+     * @param tags the tags value to set.
+     * @return the OperationDetails object itself.
+     */
+    @Generated
+    OperationDetails setTags(Map tags) {
+        this.tags = tags;
+        return this;
+    }
+
     /**
      * Get the error property: Encountered error.
      * 
@@ -202,4 +257,135 @@ public Map getTags() {
     public Error getError() {
         return this.error;
     }
+
+    /**
+     * Set the error property: Encountered error.
+     * 
+     * @param error the error value to set.
+     * @return the OperationDetails object itself.
+     */
+    @Generated
+    OperationDetails setError(Error error) {
+        this.error = error;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        jsonWriter.writeStringField("createdDateTime",
+            this.createdDateTime == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.createdDateTime));
+        jsonWriter.writeStringField("lastUpdatedDateTime",
+            this.lastUpdatedDateTime == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastUpdatedDateTime));
+        jsonWriter.writeStringField("resourceLocation", this.resourceLocation);
+        jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString());
+        jsonWriter.writeNumberField("percentCompleted", this.percentCompleted);
+        jsonWriter.writeStringField("apiVersion", this.apiVersion);
+        jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeJsonField("error", this.error);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of OperationDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of OperationDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the OperationDetails.
+     */
+    @Generated
+    public static OperationDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                readerToUse.nextToken(); // Prepare for reading
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("kind".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("documentModelCompose".equals(discriminatorValue)) {
+                    return DocumentModelComposeOperationDetails.fromJson(readerToUse.reset());
+                } else if ("documentModelCopyTo".equals(discriminatorValue)) {
+                    return DocumentModelCopyToOperationDetails.fromJson(readerToUse.reset());
+                } else if ("documentClassifierBuild".equals(discriminatorValue)) {
+                    return DocumentClassifierBuildOperationDetails.fromJson(readerToUse.reset());
+                } else if ("documentModelBuild".equals(discriminatorValue)) {
+                    return DocumentModelBuildOperationDetails.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static OperationDetails fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String operationId = null;
+            OperationStatus status = null;
+            OffsetDateTime createdDateTime = null;
+            OffsetDateTime lastUpdatedDateTime = null;
+            String resourceLocation = null;
+            OperationKind kind = null;
+            Integer percentCompleted = null;
+            String apiVersion = null;
+            Map tags = null;
+            Error error = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("operationId".equals(fieldName)) {
+                    operationId = reader.getString();
+                } else if ("status".equals(fieldName)) {
+                    status = OperationStatus.fromString(reader.getString());
+                } else if ("createdDateTime".equals(fieldName)) {
+                    createdDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastUpdatedDateTime".equals(fieldName)) {
+                    lastUpdatedDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("resourceLocation".equals(fieldName)) {
+                    resourceLocation = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = OperationKind.fromString(reader.getString());
+                } else if ("percentCompleted".equals(fieldName)) {
+                    percentCompleted = reader.getNullable(JsonReader::getInt);
+                } else if ("apiVersion".equals(fieldName)) {
+                    apiVersion = reader.getString();
+                } else if ("tags".equals(fieldName)) {
+                    tags = reader.readMap(reader1 -> reader1.getString());
+                } else if ("error".equals(fieldName)) {
+                    error = Error.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            OperationDetails deserializedOperationDetails
+                = new OperationDetails(status, createdDateTime, lastUpdatedDateTime, resourceLocation);
+            deserializedOperationDetails.operationId = operationId;
+            deserializedOperationDetails.kind = kind;
+            deserializedOperationDetails.percentCompleted = percentCompleted;
+            deserializedOperationDetails.apiVersion = apiVersion;
+            deserializedOperationDetails.tags = tags;
+            deserializedOperationDetails.error = error;
+
+            return deserializedOperationDetails;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/OperationKind.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/OperationKind.java
new file mode 100644
index 000000000000..313d3a42dbe5
--- /dev/null
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/OperationKind.java
@@ -0,0 +1,70 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) TypeSpec Code Generator.
+
+package com.azure.ai.documentintelligence.models;
+
+import com.azure.core.annotation.Generated;
+import com.azure.core.util.ExpandableStringEnum;
+import java.util.Collection;
+
+/**
+ * Type of operation.
+ */
+public final class OperationKind extends ExpandableStringEnum {
+    /**
+     * Build a new custom document model.
+     */
+    @Generated
+    public static final OperationKind DOCUMENT_MODEL_BUILD = fromString("documentModelBuild");
+
+    /**
+     * Compose a new custom document model from existing models.
+     */
+    @Generated
+    public static final OperationKind DOCUMENT_MODEL_COMPOSE = fromString("documentModelCompose");
+
+    /**
+     * Copy an existing document model to potentially a different resource, region, or
+     * subscription.
+     */
+    @Generated
+    public static final OperationKind DOCUMENT_MODEL_COPY_TO = fromString("documentModelCopyTo");
+
+    /**
+     * Build a new custom classifier model.
+     */
+    @Generated
+    public static final OperationKind DOCUMENT_CLASSIFIER_BUILD = fromString("documentClassifierBuild");
+
+    /**
+     * Creates a new instance of OperationKind value.
+     * 
+     * @deprecated Use the {@link #fromString(String)} factory method.
+     */
+    @Generated
+    @Deprecated
+    public OperationKind() {
+    }
+
+    /**
+     * Creates or finds a OperationKind from its string representation.
+     * 
+     * @param name a name to look for.
+     * @return the corresponding OperationKind.
+     */
+    @Generated
+    public static OperationKind fromString(String name) {
+        return fromString(name, OperationKind.class);
+    }
+
+    /**
+     * Gets known OperationKind values.
+     * 
+     * @return known OperationKind values.
+     */
+    @Generated
+    public static Collection values() {
+        return values(OperationKind.class);
+    }
+}
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/OperationStatus.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/OperationStatus.java
index 7735b857915f..a1a150f54d73 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/OperationStatus.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/OperationStatus.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -66,7 +65,6 @@ public OperationStatus() {
      * @return the corresponding OperationStatus.
      */
     @Generated
-    @JsonCreator
     public static OperationStatus fromString(String name) {
         return fromString(name, OperationStatus.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ParagraphRole.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ParagraphRole.java
index f1228100752d..e996d59dd685 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ParagraphRole.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ParagraphRole.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -72,7 +71,6 @@ public ParagraphRole() {
      * @return the corresponding ParagraphRole.
      */
     @Generated
-    @JsonCreator
     public static ParagraphRole fromString(String name) {
         return fromString(name, ParagraphRole.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/QuotaDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/QuotaDetails.java
index 4e08872f9f72..816bc80db278 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/QuotaDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/QuotaDetails.java
@@ -6,35 +6,36 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * Quota used, limit, and next reset date/time.
  */
 @Immutable
-public final class QuotaDetails {
+public final class QuotaDetails implements JsonSerializable {
     /*
      * Amount of the resource quota used.
      */
     @Generated
-    @JsonProperty(value = "used")
-    private int used;
+    private final int used;
 
     /*
      * Resource quota limit.
      */
     @Generated
-    @JsonProperty(value = "quota")
-    private int quota;
+    private final int quota;
 
     /*
      * Date/time when the resource quota usage will be reset.
      */
     @Generated
-    @JsonProperty(value = "quotaResetDateTime")
-    private OffsetDateTime quotaResetDateTime;
+    private final OffsetDateTime quotaResetDateTime;
 
     /**
      * Creates an instance of QuotaDetails class.
@@ -44,9 +45,7 @@ public final class QuotaDetails {
      * @param quotaResetDateTime the quotaResetDateTime value to set.
      */
     @Generated
-    @JsonCreator
-    private QuotaDetails(@JsonProperty(value = "used") int used, @JsonProperty(value = "quota") int quota,
-        @JsonProperty(value = "quotaResetDateTime") OffsetDateTime quotaResetDateTime) {
+    private QuotaDetails(int used, int quota, OffsetDateTime quotaResetDateTime) {
         this.used = used;
         this.quota = quota;
         this.quotaResetDateTime = quotaResetDateTime;
@@ -81,4 +80,53 @@ public int getQuota() {
     public OffsetDateTime getQuotaResetDateTime() {
         return this.quotaResetDateTime;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeIntField("used", this.used);
+        jsonWriter.writeIntField("quota", this.quota);
+        jsonWriter.writeStringField("quotaResetDateTime",
+            this.quotaResetDateTime == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.quotaResetDateTime));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of QuotaDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of QuotaDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the QuotaDetails.
+     */
+    @Generated
+    public static QuotaDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            int used = 0;
+            int quota = 0;
+            OffsetDateTime quotaResetDateTime = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("used".equals(fieldName)) {
+                    used = reader.getInt();
+                } else if ("quota".equals(fieldName)) {
+                    quota = reader.getInt();
+                } else if ("quotaResetDateTime".equals(fieldName)) {
+                    quotaResetDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new QuotaDetails(used, quota, quotaResetDateTime);
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ResourceDetails.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ResourceDetails.java
index 8b5a470f2fd5..232cd26a2b29 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ResourceDetails.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/ResourceDetails.java
@@ -6,27 +6,28 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * General information regarding the current resource.
  */
 @Immutable
-public final class ResourceDetails {
+public final class ResourceDetails implements JsonSerializable {
     /*
      * Details regarding custom document models.
      */
     @Generated
-    @JsonProperty(value = "customDocumentModels")
-    private CustomDocumentModelsDetails customDocumentModels;
+    private final CustomDocumentModelsDetails customDocumentModels;
 
     /*
      * Quota used, limit, and next reset date/time.
      */
     @Generated
-    @JsonProperty(value = "customNeuralDocumentModelBuilds")
-    private QuotaDetails customNeuralDocumentModelBuilds;
+    private final QuotaDetails customNeuralDocumentModelBuilds;
 
     /**
      * Creates an instance of ResourceDetails class.
@@ -35,10 +36,8 @@ public final class ResourceDetails {
      * @param customNeuralDocumentModelBuilds the customNeuralDocumentModelBuilds value to set.
      */
     @Generated
-    @JsonCreator
-    private ResourceDetails(
-        @JsonProperty(value = "customDocumentModels") CustomDocumentModelsDetails customDocumentModels,
-        @JsonProperty(value = "customNeuralDocumentModelBuilds") QuotaDetails customNeuralDocumentModelBuilds) {
+    private ResourceDetails(CustomDocumentModelsDetails customDocumentModels,
+        QuotaDetails customNeuralDocumentModelBuilds) {
         this.customDocumentModels = customDocumentModels;
         this.customNeuralDocumentModelBuilds = customNeuralDocumentModelBuilds;
     }
@@ -62,4 +61,45 @@ public CustomDocumentModelsDetails getCustomDocumentModels() {
     public QuotaDetails getCustomNeuralDocumentModelBuilds() {
         return this.customNeuralDocumentModelBuilds;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeJsonField("customDocumentModels", this.customDocumentModels);
+        jsonWriter.writeJsonField("customNeuralDocumentModelBuilds", this.customNeuralDocumentModelBuilds);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ResourceDetails from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ResourceDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ResourceDetails.
+     */
+    @Generated
+    public static ResourceDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            CustomDocumentModelsDetails customDocumentModels = null;
+            QuotaDetails customNeuralDocumentModelBuilds = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("customDocumentModels".equals(fieldName)) {
+                    customDocumentModels = CustomDocumentModelsDetails.fromJson(reader);
+                } else if ("customNeuralDocumentModelBuilds".equals(fieldName)) {
+                    customNeuralDocumentModelBuilds = QuotaDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new ResourceDetails(customDocumentModels, customNeuralDocumentModelBuilds);
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/SplitMode.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/SplitMode.java
index b26b7e10b485..4bd39e703fcf 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/SplitMode.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/SplitMode.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -48,7 +47,6 @@ public SplitMode() {
      * @return the corresponding SplitMode.
      */
     @Generated
-    @JsonCreator
     public static SplitMode fromString(String name) {
         return fromString(name, SplitMode.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/StringIndexType.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/StringIndexType.java
index 73f5eed18408..529ecc6fe14a 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/StringIndexType.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/StringIndexType.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -21,13 +20,13 @@ public final class StringIndexType extends ExpandableStringEnum
     public static final StringIndexType TEXT_ELEMENTS = fromString("textElements");
 
     /**
-     * Character unit represented by a single unicode code point. Used by Python 3.
+     * Character unit represented by a single unicode code point.  Used by Python 3.
      */
     @Generated
     public static final StringIndexType UNICODE_CODE_POINT = fromString("unicodeCodePoint");
 
     /**
-     * Character unit represented by a 16-bit Unicode code unit. Used by JavaScript,
+     * Character unit represented by a 16-bit Unicode code unit.  Used by JavaScript,
      * Java, and .NET.
      */
     @Generated
@@ -50,7 +49,6 @@ public StringIndexType() {
      * @return the corresponding StringIndexType.
      */
     @Generated
-    @JsonCreator
     public static StringIndexType fromString(String name) {
         return fromString(name, StringIndexType.class);
     }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/Warning.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/Warning.java
index 55562a9229aa..2a3e3faebd98 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/Warning.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/com/azure/ai/documentintelligence/models/Warning.java
@@ -6,33 +6,33 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The error object.
  */
 @Immutable
-public final class Warning {
+public final class Warning implements JsonSerializable {
     /*
      * One of a server-defined set of warning codes.
      */
     @Generated
-    @JsonProperty(value = "code")
-    private String code;
+    private final String code;
 
     /*
      * A human-readable representation of the warning.
      */
     @Generated
-    @JsonProperty(value = "message")
-    private String message;
+    private final String message;
 
     /*
      * The target of the error.
      */
     @Generated
-    @JsonProperty(value = "target")
     private String target;
 
     /**
@@ -42,8 +42,7 @@ public final class Warning {
      * @param message the message value to set.
      */
     @Generated
-    @JsonCreator
-    private Warning(@JsonProperty(value = "code") String code, @JsonProperty(value = "message") String message) {
+    private Warning(String code, String message) {
         this.code = code;
         this.message = message;
     }
@@ -77,4 +76,52 @@ public String getMessage() {
     public String getTarget() {
         return this.target;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("code", this.code);
+        jsonWriter.writeStringField("message", this.message);
+        jsonWriter.writeStringField("target", this.target);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Warning from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Warning if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the Warning.
+     */
+    @Generated
+    public static Warning fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String code = null;
+            String message = null;
+            String target = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("code".equals(fieldName)) {
+                    code = reader.getString();
+                } else if ("message".equals(fieldName)) {
+                    message = reader.getString();
+                } else if ("target".equals(fieldName)) {
+                    target = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            Warning deserializedWarning = new Warning(code, message);
+            deserializedWarning.target = target;
+
+            return deserializedWarning;
+        });
+    }
 }
diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/module-info.java b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/module-info.java
index 1905329421da..d0e120e8de76 100644
--- a/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/module-info.java
+++ b/sdk/documentintelligence/azure-ai-documentintelligence/src/main/java/module-info.java
@@ -4,7 +4,8 @@
 
 module com.azure.ai.documentintelligence {
     requires transitive com.azure.core;
+    requires transitive com.azure.json;
     exports com.azure.ai.documentintelligence;
     exports com.azure.ai.documentintelligence.models;
-    opens com.azure.ai.documentintelligence.models to com.azure.core, com.fasterxml.jackson.databind;
+    opens com.azure.ai.documentintelligence.models to com.azure.core;
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/EasmAsyncClient.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/EasmAsyncClient.java
index be3d498857ae..4e272c9099a3 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/EasmAsyncClient.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/EasmAsyncClient.java
@@ -150,20 +150,22 @@ public final class EasmAsyncClient {
     public PagedFlux listAssetResource(RequestOptions requestOptions) {
         PagedFlux pagedFluxResponse = this.serviceClient.listAssetResourceAsync(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
-                pagedResponse.getStatusCode(), pagedResponse.getHeaders(), pagedResponse.getValue().stream()
-                    .map(protocolMethodData -> cleanUp(protocolMethodData)).collect(Collectors.toList()),
+                pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
+                pagedResponse.getValue()
+                    .stream()
+                    .map(protocolMethodData -> cleanUp(protocolMethodData))
+                    .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
         });
     }
 
     /**
      * Update labels on assets matching the provided filter.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     state: String(candidate/confirmed/dismissed/candidateInvestigate/associatedPartner/associatedThirdparty) (Optional)
@@ -174,9 +176,7 @@ public PagedFlux listAssetResource(RequestOptions requestOptions) {
      *     transfers: String(as/contact/domain/host/ipAddress/ipBlock/page/sslCert) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -210,11 +210,10 @@ public Mono> updateAssetsWithResponse(String filter, Binary
 
     /**
      * Retrieve an asset by assetId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Required)
      *     name: String (Optional)
      *     displayName: String (Optional)
@@ -247,8 +246,7 @@ public Mono> updateAssetsWithResponse(String filter, Binary
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the items in the current page of results along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the items in the current page of results along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -316,31 +314,32 @@ public Mono> getAssetResourceWithResponse(String assetId, R
     public PagedFlux listDataConnection(RequestOptions requestOptions) {
         PagedFlux pagedFluxResponse = this.serviceClient.listDataConnectionAsync(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
-                pagedResponse.getStatusCode(), pagedResponse.getHeaders(), pagedResponse.getValue().stream()
-                    .map(protocolMethodData -> cleanUp(protocolMethodData)).collect(Collectors.toList()),
+                pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
+                pagedResponse.getValue()
+                    .stream()
+                    .map(protocolMethodData -> cleanUp(protocolMethodData))
+                    .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
         });
     }
 
     /**
      * Validate a data connection with a given dataConnectionName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     name: String (Optional)
      *     content: String(assets/attackSurfaceInsights) (Optional)
      *     frequency: String(daily/weekly/monthly) (Optional)
      *     frequencyOffset: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     error (Optional): {
@@ -375,11 +374,10 @@ public Mono> validateDataConnectionWithResponse(BinaryData
 
     /**
      * Retrieve a data connection with a given dataConnectionName.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -411,22 +409,20 @@ public Mono> getDataConnectionWithResponse(String dataConne
 
     /**
      * Create or replace a data connection with a given dataConnectionName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     name: String (Optional)
      *     content: String(assets/attackSurfaceInsights) (Optional)
      *     frequency: String(daily/weekly/monthly) (Optional)
      *     frequencyOffset: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -568,20 +564,22 @@ public Mono> deleteDataConnectionWithResponse(String dataConnecti
     public PagedFlux listDiscoGroup(RequestOptions requestOptions) {
         PagedFlux pagedFluxResponse = this.serviceClient.listDiscoGroupAsync(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
-                pagedResponse.getStatusCode(), pagedResponse.getHeaders(), pagedResponse.getValue().stream()
-                    .map(protocolMethodData -> cleanUp(protocolMethodData)).collect(Collectors.toList()),
+                pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
+                pagedResponse.getValue()
+                    .stream()
+                    .map(protocolMethodData -> cleanUp(protocolMethodData))
+                    .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
         });
     }
 
     /**
      * Validate a discovery group with a given groupName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Optional)
@@ -603,9 +601,7 @@ public PagedFlux listDiscoGroup(RequestOptions requestOptions) {
      *     templateId: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     error (Optional): {
@@ -640,9 +636,7 @@ public Mono> validateDiscoGroupWithResponse(BinaryData disc
 
     /**
      * Retrieve a discovery group with a given groupName.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -701,9 +695,7 @@ public Mono> getDiscoGroupWithResponse(String groupName, Re
 
     /**
      * Create a discovery group with a given groupName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Optional)
@@ -725,9 +717,7 @@ public Mono> getDiscoGroupWithResponse(String groupName, Re
      *     templateId: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -875,20 +865,22 @@ public Mono> runDiscoGroupWithResponse(String groupName, RequestO
     public PagedFlux listDiscoTemplate(RequestOptions requestOptions) {
         PagedFlux pagedFluxResponse = this.serviceClient.listDiscoTemplateAsync(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
-                pagedResponse.getStatusCode(), pagedResponse.getHeaders(), pagedResponse.getValue().stream()
-                    .map(protocolMethodData -> cleanUp(protocolMethodData)).collect(Collectors.toList()),
+                pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
+                pagedResponse.getValue()
+                    .stream()
+                    .map(protocolMethodData -> cleanUp(protocolMethodData))
+                    .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
         });
     }
 
     /**
      * Retrieve a disco template with a given templateId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -917,8 +909,7 @@ public PagedFlux listDiscoTemplate(RequestOptions requestOptions) {
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the items in the current page of results along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the items in the current page of results along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -928,9 +919,7 @@ public Mono> getDiscoTemplateWithResponse(String templateId
 
     /**
      * Get billable assets summary for the workspace.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     assetSummaries (Optional): [
@@ -953,8 +942,7 @@ public Mono> getDiscoTemplateWithResponse(String templateId
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return billable assets summary for the workspace along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return billable assets summary for the workspace along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -964,9 +952,7 @@ public Mono> getBillableWithResponse(RequestOptions request
 
     /**
      * Get the most recent snapshot of asset summary values for the snapshot request.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metric: String (Optional)
@@ -975,9 +961,7 @@ public Mono> getBillableWithResponse(RequestOptions request
      *     page: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     displayName: String (Optional)
@@ -991,6 +975,7 @@ public Mono> getBillableWithResponse(RequestOptions request
      *         nextLink: String (Optional)
      *         value (Optional): [
      *              (Optional){
+     *                 kind: String (Optional)
      *                 id: String (Required)
      *                 name: String (Optional)
      *                 displayName: String (Optional)
@@ -1026,8 +1011,7 @@ public Mono> getBillableWithResponse(RequestOptions request
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the most recent snapshot of asset summary values for the snapshot request along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return the most recent snapshot of asset summary values for the snapshot request along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1038,9 +1022,7 @@ public Mono> getSnapshotWithResponse(BinaryData reportAsset
 
     /**
      * Get asset summary details for the summary request.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metricCategories (Optional): [
@@ -1057,9 +1039,7 @@ public Mono> getSnapshotWithResponse(BinaryData reportAsset
      *     labelName: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     assetSummaries (Optional): [
@@ -1081,15 +1061,13 @@ public Mono> getSnapshotWithResponse(BinaryData reportAsset
      * }
      * }
* - * @param reportAssetSummaryRequest A request body used to retrieve summary asset information. One and only one - * collection of summary identifiers must be provided: filters, metrics, or metricCategories. + * @param reportAssetSummaryRequest A request body used to retrieve summary asset information. One and only one collection of summary identifiers must be provided: filters, metrics, or metricCategories. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return asset summary details for the summary request along with {@link Response} on successful completion of - * {@link Mono}. + * @return asset summary details for the summary request along with {@link Response} on successful completion of {@link Mono}. */ @Generated @ServiceMethod(returns = ReturnType.SINGLE) @@ -1158,20 +1136,22 @@ public Mono> getSummaryWithResponse(BinaryData reportAssetS public PagedFlux listSavedFilter(RequestOptions requestOptions) { PagedFlux pagedFluxResponse = this.serviceClient.listSavedFilterAsync(requestOptions); return PagedFlux.create(() -> (continuationToken, pageSize) -> { - Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1) + Flux> flux = (continuationToken == null) + ? pagedFluxResponse.byPage().take(1) : pagedFluxResponse.byPage(continuationToken).take(1); return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), - pagedResponse.getStatusCode(), pagedResponse.getHeaders(), pagedResponse.getValue().stream() - .map(protocolMethodData -> cleanUp(protocolMethodData)).collect(Collectors.toList()), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> cleanUp(protocolMethodData)) + .collect(Collectors.toList()), pagedResponse.getContinuationToken(), null)); }); } /** * Retrieve a saved filter by filterName. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -1198,18 +1178,14 @@ public Mono> getSavedFilterWithResponse(String filterName,
 
     /**
      * Create or replace a saved filter with a given filterName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     filter: String (Required)
      *     description: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -1325,20 +1301,22 @@ public Mono> deleteSavedFilterWithResponse(String filterName, Req
     public PagedFlux listTask(RequestOptions requestOptions) {
         PagedFlux pagedFluxResponse = this.serviceClient.listTaskAsync(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
-                pagedResponse.getStatusCode(), pagedResponse.getHeaders(), pagedResponse.getValue().stream()
-                    .map(protocolMethodData -> cleanUp(protocolMethodData)).collect(Collectors.toList()),
+                pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
+                pagedResponse.getValue()
+                    .stream()
+                    .map(protocolMethodData -> cleanUp(protocolMethodData))
+                    .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
         });
     }
 
     /**
      * Retrieve a task by taskId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1370,9 +1348,7 @@ public Mono> getTaskWithResponse(String taskId, RequestOpti
 
     /**
      * Cancel a task by taskId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1408,8 +1384,7 @@ public Mono> cancelTaskWithResponse(String taskId, RequestO
      * @param filter Filter the result list using the given expression.
      * @param orderBy A list of expressions that specify the order of the returned resources.
      * @param skip The number of result items to skip.
-     * @param mark Specify this value instead of 'skip' to use cursor-based searching. Initial value is '*' and
-     * subsequent values are returned in the response.
+     * @param mark Specify this value instead of 'skip' to use cursor-based searching. Initial value is '*' and subsequent values are returned in the response.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws HttpResponseException thrown if the request is rejected by server.
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
@@ -1437,11 +1412,13 @@ public PagedFlux listAssetResource(String filter, String orderBy,
         }
         PagedFlux pagedFluxResponse = listAssetResource(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(AssetResource.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1465,11 +1442,13 @@ public PagedFlux listAssetResource() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listAssetResource(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(AssetResource.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1494,7 +1473,8 @@ public Mono updateAssets(String filter, AssetUpdateData assetUpdateData) {
         // Generated convenience method for updateAssetsWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return updateAssetsWithResponse(filter, BinaryData.fromObject(assetUpdateData), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> cleanUp(protocolMethodData).toObject(Task.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> cleanUp(protocolMethodData).toObject(Task.class));
     }
 
     /**
@@ -1538,11 +1518,13 @@ public PagedFlux listDataConnection(Integer skip) {
         }
         PagedFlux pagedFluxResponse = listDataConnection(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(DataConnection.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1565,11 +1547,13 @@ public PagedFlux listDataConnection() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listDataConnection(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(DataConnection.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1686,11 +1670,13 @@ public PagedFlux listDiscoGroup(String filter, Integer skip) {
         }
         PagedFlux pagedFluxResponse = listDiscoGroup(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(DiscoGroup.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1713,11 +1699,13 @@ public PagedFlux listDiscoGroup() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listDiscoGroup(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(DiscoGroup.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1826,11 +1814,13 @@ public PagedFlux listRuns(String groupName) {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listRuns(groupName, requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(DiscoRunResult.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1862,11 +1852,13 @@ public PagedFlux listDiscoTemplate(String filter, Integer skip) {
         }
         PagedFlux pagedFluxResponse = listDiscoTemplate(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(DiscoTemplate.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -1889,11 +1881,13 @@ public PagedFlux listDiscoTemplate() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listDiscoTemplate(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(DiscoTemplate.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -2008,11 +2002,13 @@ public PagedFlux listSavedFilter(String filter, Integer skip) {
         }
         PagedFlux pagedFluxResponse = listSavedFilter(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(SavedFilter.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -2036,11 +2032,13 @@ public PagedFlux listSavedFilter() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listSavedFilter(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(SavedFilter.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
@@ -2139,11 +2137,15 @@ public PagedFlux listTask(String filter, String orderBy, Integer skip) {
         }
         PagedFlux pagedFluxResponse = listTask(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
-                pagedResponse.getStatusCode(), pagedResponse.getHeaders(), pagedResponse.getValue().stream()
-                    .map(protocolMethodData -> protocolMethodData.toObject(Task.class)).collect(Collectors.toList()),
+                pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
+                pagedResponse.getValue()
+                    .stream()
+                    .map(protocolMethodData -> protocolMethodData.toObject(Task.class))
+                    .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
         });
     }
@@ -2165,11 +2167,15 @@ public PagedFlux listTask() {
         RequestOptions requestOptions = new RequestOptions();
         PagedFlux pagedFluxResponse = listTask(requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
-                pagedResponse.getStatusCode(), pagedResponse.getHeaders(), pagedResponse.getValue().stream()
-                    .map(protocolMethodData -> protocolMethodData.toObject(Task.class)).collect(Collectors.toList()),
+                pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
+                pagedResponse.getValue()
+                    .stream()
+                    .map(protocolMethodData -> protocolMethodData.toObject(Task.class))
+                    .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
         });
     }
@@ -2292,11 +2298,15 @@ private BinaryData cleanUp(BinaryData input) {
     public PagedFlux listRuns(String groupName, RequestOptions requestOptions) {
         PagedFlux pagedFluxResponse = this.serviceClient.listRunsAsync(groupName, requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
-                pagedResponse.getStatusCode(), pagedResponse.getHeaders(), pagedResponse.getValue().stream()
-                    .map(protocolMethodData -> cleanUp(protocolMethodData)).collect(Collectors.toList()),
+                pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
+                pagedResponse.getValue()
+                    .stream()
+                    .map(protocolMethodData -> cleanUp(protocolMethodData))
+                    .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
         });
     }
@@ -2328,11 +2338,13 @@ public PagedFlux listRuns(String groupName, String filter, Integ
         }
         PagedFlux pagedFluxResponse = listRuns(groupName, requestOptions);
         return PagedFlux.create(() -> (continuationToken, pageSize) -> {
-            Flux> flux = (continuationToken == null) ? pagedFluxResponse.byPage().take(1)
+            Flux> flux = (continuationToken == null)
+                ? pagedFluxResponse.byPage().take(1)
                 : pagedFluxResponse.byPage(continuationToken).take(1);
             return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
                 pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
-                pagedResponse.getValue().stream()
+                pagedResponse.getValue()
+                    .stream()
                     .map(protocolMethodData -> protocolMethodData.toObject(DiscoRunResult.class))
                     .collect(Collectors.toList()),
                 pagedResponse.getContinuationToken(), null));
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/EasmClient.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/EasmClient.java
index 9c5b97701d92..c560080b21e3 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/EasmClient.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/EasmClient.java
@@ -147,9 +147,7 @@ public PagedIterable listAssetResource(RequestOptions requestOptions
 
     /**
      * Update labels on assets matching the provided filter.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     state: String(candidate/confirmed/dismissed/candidateInvestigate/associatedPartner/associatedThirdparty) (Optional)
@@ -160,9 +158,7 @@ public PagedIterable listAssetResource(RequestOptions requestOptions
      *     transfers: String(as/contact/domain/host/ipAddress/ipBlock/page/sslCert) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -196,11 +192,10 @@ public Response updateAssetsWithResponse(String filter, BinaryData a
 
     /**
      * Retrieve an asset by assetId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Required)
      *     name: String (Optional)
      *     displayName: String (Optional)
@@ -304,20 +299,17 @@ public PagedIterable listDataConnection(RequestOptions requestOption
 
     /**
      * Validate a data connection with a given dataConnectionName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     name: String (Optional)
      *     content: String(assets/attackSurfaceInsights) (Optional)
      *     frequency: String(daily/weekly/monthly) (Optional)
      *     frequencyOffset: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     error (Optional): {
@@ -352,11 +344,10 @@ public Response validateDataConnectionWithResponse(BinaryData dataCo
 
     /**
      * Retrieve a data connection with a given dataConnectionName.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -388,22 +379,20 @@ public Response getDataConnectionWithResponse(String dataConnectionN
 
     /**
      * Create or replace a data connection with a given dataConnectionName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     name: String (Optional)
      *     content: String(assets/attackSurfaceInsights) (Optional)
      *     frequency: String(daily/weekly/monthly) (Optional)
      *     frequencyOffset: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -454,9 +443,7 @@ public Response deleteDataConnectionWithResponse(String dataConnectionName
 
     /**
      * Validate a discovery group with a given groupName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Optional)
@@ -478,9 +465,7 @@ public Response deleteDataConnectionWithResponse(String dataConnectionName
      *     templateId: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     error (Optional): {
@@ -515,9 +500,7 @@ public Response validateDiscoGroupWithResponse(BinaryData discoGroup
 
     /**
      * Retrieve a discovery group with a given groupName.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -576,9 +559,7 @@ public Response getDiscoGroupWithResponse(String groupName, RequestO
 
     /**
      * Create a discovery group with a given groupName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Optional)
@@ -600,9 +581,7 @@ public Response getDiscoGroupWithResponse(String groupName, RequestO
      *     templateId: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -828,9 +807,7 @@ public PagedIterable listDiscoTemplate(RequestOptions requestOptions
 
     /**
      * Retrieve a disco template with a given templateId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -869,9 +846,7 @@ public Response getDiscoTemplateWithResponse(String templateId, Requ
 
     /**
      * Get billable assets summary for the workspace.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     assetSummaries (Optional): [
@@ -904,9 +879,7 @@ public Response getBillableWithResponse(RequestOptions requestOption
 
     /**
      * Get the most recent snapshot of asset summary values for the snapshot request.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metric: String (Optional)
@@ -915,9 +888,7 @@ public Response getBillableWithResponse(RequestOptions requestOption
      *     page: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     displayName: String (Optional)
@@ -931,6 +902,7 @@ public Response getBillableWithResponse(RequestOptions requestOption
      *         nextLink: String (Optional)
      *         value (Optional): [
      *              (Optional){
+     *                 kind: String (Optional)
      *                 id: String (Required)
      *                 name: String (Optional)
      *                 displayName: String (Optional)
@@ -977,9 +949,7 @@ public Response getSnapshotWithResponse(BinaryData reportAssetSnapsh
 
     /**
      * Get asset summary details for the summary request.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metricCategories (Optional): [
@@ -996,9 +966,7 @@ public Response getSnapshotWithResponse(BinaryData reportAssetSnapsh
      *     labelName: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     assetSummaries (Optional): [
@@ -1020,8 +988,7 @@ public Response getSnapshotWithResponse(BinaryData reportAssetSnapsh
      * }
      * }
* - * @param reportAssetSummaryRequest A request body used to retrieve summary asset information. One and only one - * collection of summary identifiers must be provided: filters, metrics, or metricCategories. + * @param reportAssetSummaryRequest A request body used to retrieve summary asset information. One and only one collection of summary identifiers must be provided: filters, metrics, or metricCategories. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -1099,9 +1066,7 @@ public PagedIterable listSavedFilter(RequestOptions requestOptions) /** * Retrieve a saved filter by filterName. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -1128,18 +1093,14 @@ public Response getSavedFilterWithResponse(String filterName, Reques
 
     /**
      * Create or replace a saved filter with a given filterName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     filter: String (Required)
      *     description: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -1257,9 +1218,7 @@ public PagedIterable listTask(RequestOptions requestOptions) {
 
     /**
      * Retrieve a task by taskId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1291,9 +1250,7 @@ public Response getTaskWithResponse(String taskId, RequestOptions re
 
     /**
      * Cancel a task by taskId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/EasmClientBuilder.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/EasmClientBuilder.java
index d7f01f71de48..10befa015d54 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/EasmClientBuilder.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/EasmClientBuilder.java
@@ -21,8 +21,8 @@
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
 import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.RequestIdPolicy;
@@ -337,7 +337,8 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
@@ -345,12 +346,15 @@ private HttpPipeline createHttpPipeline() {
         if (tokenCredential != null) {
             policies.add(new BearerTokenAuthenticationPolicy(tokenCredential, DEFAULT_SCOPES));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/implementation/EasmClientImpl.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/implementation/EasmClientImpl.java
index 083ff7efe91c..790119342259 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/implementation/EasmClientImpl.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/implementation/EasmClientImpl.java
@@ -156,8 +156,7 @@ public SerializerAdapter getSerializerAdapter() {
     /**
      * Initializes an instance of EasmClient client.
      * 
-     * @param endpoint The endpoint hosting the requested resource. For example,
-     * https://{region}.easm.defender.microsoft.com.
+     * @param endpoint The endpoint hosting the requested resource. For example, https://{region}.easm.defender.microsoft.com.
      * @param subscriptionId The ID of the target subscription.
      * @param resourceGroupName The name of the Resource Group.
      * @param workspaceName The name of the Workspace.
@@ -174,8 +173,7 @@ public EasmClientImpl(String endpoint, String subscriptionId, String resourceGro
      * Initializes an instance of EasmClient client.
      * 
      * @param httpPipeline The HTTP pipeline to send requests through.
-     * @param endpoint The endpoint hosting the requested resource. For example,
-     * https://{region}.easm.defender.microsoft.com.
+     * @param endpoint The endpoint hosting the requested resource. For example, https://{region}.easm.defender.microsoft.com.
      * @param subscriptionId The ID of the target subscription.
      * @param resourceGroupName The name of the Resource Group.
      * @param workspaceName The name of the Workspace.
@@ -192,8 +190,7 @@ public EasmClientImpl(HttpPipeline httpPipeline, String endpoint, String subscri
      * 
      * @param httpPipeline The HTTP pipeline to send requests through.
      * @param serializerAdapter The serializer to serialize an object into a string.
-     * @param endpoint The endpoint hosting the requested resource. For example,
-     * https://{region}.easm.defender.microsoft.com.
+     * @param endpoint The endpoint hosting the requested resource. For example, https://{region}.easm.defender.microsoft.com.
      * @param subscriptionId The ID of the target subscription.
      * @param resourceGroupName The name of the Resource Group.
      * @param workspaceName The name of the Workspace.
@@ -1013,55 +1010,21 @@ Response listTaskNextSync(@PathParam(value = "nextLink", encoded = t
 
     /**
      * Retrieve a list of assets for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
markStringNoSpecify this value instead of 'skip' to use cursor-based searching. Initial value is '*' and subsequent - * values are returned in the response.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
markStringNoSpecify this value instead of 'skip' to use cursor-based searching. Initial value is '*' and subsequent values are returned in the response.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Required)
      *     name: String (Optional)
      *     displayName: String (Optional)
@@ -1093,8 +1056,7 @@ Response listTaskNextSync(@PathParam(value = "nextLink", encoded = t
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of AssetResource items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of AssetResource items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listAssetResourceSinglePageAsync(RequestOptions requestOptions) {
@@ -1109,55 +1071,21 @@ private Mono> listAssetResourceSinglePageAsync(Request
 
     /**
      * Retrieve a list of assets for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
markStringNoSpecify this value instead of 'skip' to use cursor-based searching. Initial value is '*' and subsequent - * values are returned in the response.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
markStringNoSpecify this value instead of 'skip' to use cursor-based searching. Initial value is '*' and subsequent values are returned in the response.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Required)
      *     name: String (Optional)
      *     displayName: String (Optional)
@@ -1222,55 +1150,21 @@ public PagedFlux listAssetResourceAsync(RequestOptions requestOption
 
     /**
      * Retrieve a list of assets for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
markStringNoSpecify this value instead of 'skip' to use cursor-based searching. Initial value is '*' and subsequent - * values are returned in the response.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
markStringNoSpecify this value instead of 'skip' to use cursor-based searching. Initial value is '*' and subsequent values are returned in the response.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Required)
      *     name: String (Optional)
      *     displayName: String (Optional)
@@ -1316,55 +1210,21 @@ private PagedResponse listAssetResourceSinglePage(RequestOptions req
 
     /**
      * Retrieve a list of assets for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
markStringNoSpecify this value instead of 'skip' to use cursor-based searching. Initial value is '*' and subsequent - * values are returned in the response.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
markStringNoSpecify this value instead of 'skip' to use cursor-based searching. Initial value is '*' and subsequent values are returned in the response.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Required)
      *     name: String (Optional)
      *     displayName: String (Optional)
@@ -1429,9 +1289,7 @@ public PagedIterable listAssetResource(RequestOptions requestOptions
 
     /**
      * Update labels on assets matching the provided filter.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     state: String(candidate/confirmed/dismissed/candidateInvestigate/associatedPartner/associatedThirdparty) (Optional)
@@ -1442,9 +1300,7 @@ public PagedIterable listAssetResource(RequestOptions requestOptions
      *     transfers: String(as/contact/domain/host/ipAddress/ipBlock/page/sslCert) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1480,9 +1336,7 @@ public Mono> updateAssetsWithResponseAsync(String filter, B
 
     /**
      * Update labels on assets matching the provided filter.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     state: String(candidate/confirmed/dismissed/candidateInvestigate/associatedPartner/associatedThirdparty) (Optional)
@@ -1493,9 +1347,7 @@ public Mono> updateAssetsWithResponseAsync(String filter, B
      *     transfers: String(as/contact/domain/host/ipAddress/ipBlock/page/sslCert) (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1531,11 +1383,10 @@ public Response updateAssetsWithResponse(String filter, BinaryData a
 
     /**
      * Retrieve an asset by assetId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Required)
      *     name: String (Optional)
      *     displayName: String (Optional)
@@ -1568,8 +1419,7 @@ public Response updateAssetsWithResponse(String filter, BinaryData a
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the items in the current page of results along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the items in the current page of results along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getAssetResourceWithResponseAsync(String assetId, RequestOptions requestOptions) {
@@ -1581,11 +1431,10 @@ public Mono> getAssetResourceWithResponseAsync(String asset
 
     /**
      * Retrieve an asset by assetId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Required)
      *     name: String (Optional)
      *     displayName: String (Optional)
@@ -1630,36 +1479,18 @@ public Response getAssetResourceWithResponse(String assetId, Request
 
     /**
      * Retrieve a list of data connections.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -1679,8 +1510,7 @@ public Response getAssetResourceWithResponse(String assetId, Request
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of DataConnection items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of DataConnection items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listDataConnectionSinglePageAsync(RequestOptions requestOptions) {
@@ -1695,36 +1525,18 @@ private Mono> listDataConnectionSinglePageAsync(Reques
 
     /**
      * Retrieve a list of data connections.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -1777,36 +1589,18 @@ public PagedFlux listDataConnectionAsync(RequestOptions requestOptio
 
     /**
      * Retrieve a list of data connections.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -1840,36 +1634,18 @@ private PagedResponse listDataConnectionSinglePage(RequestOptions re
 
     /**
      * Retrieve a list of data connections.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -1922,20 +1698,17 @@ public PagedIterable listDataConnection(RequestOptions requestOption
 
     /**
      * Validate a data connection with a given dataConnectionName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     name: String (Optional)
      *     content: String(assets/attackSurfaceInsights) (Optional)
      *     frequency: String(daily/weekly/monthly) (Optional)
      *     frequencyOffset: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     error (Optional): {
@@ -1972,20 +1745,17 @@ public Mono> validateDataConnectionWithResponseAsync(Binary
 
     /**
      * Validate a data connection with a given dataConnectionName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     name: String (Optional)
      *     content: String(assets/attackSurfaceInsights) (Optional)
      *     frequency: String(daily/weekly/monthly) (Optional)
      *     frequencyOffset: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     error (Optional): {
@@ -2022,11 +1792,10 @@ public Response validateDataConnectionWithResponse(BinaryData dataCo
 
     /**
      * Retrieve a data connection with a given dataConnectionName.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -2060,11 +1829,10 @@ public Mono> getDataConnectionWithResponseAsync(String data
 
     /**
      * Retrieve a data connection with a given dataConnectionName.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -2098,22 +1866,20 @@ public Response getDataConnectionWithResponse(String dataConnectionN
 
     /**
      * Create or replace a data connection with a given dataConnectionName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     name: String (Optional)
      *     content: String(assets/attackSurfaceInsights) (Optional)
      *     frequency: String(daily/weekly/monthly) (Optional)
      *     frequencyOffset: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -2149,22 +1915,20 @@ public Mono> createOrReplaceDataConnectionWithResponseAsync
 
     /**
      * Create or replace a data connection with a given dataConnectionName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     name: String (Optional)
      *     content: String(assets/attackSurfaceInsights) (Optional)
      *     frequency: String(daily/weekly/monthly) (Optional)
      *     frequencyOffset: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -2238,40 +2002,16 @@ public Response deleteDataConnectionWithResponse(String dataConnectionName
 
     /**
      * Retrieve a list of discovery group for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -2319,8 +2059,7 @@ public Response deleteDataConnectionWithResponse(String dataConnectionName
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of DiscoGroup items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of DiscoGroup items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listDiscoGroupSinglePageAsync(RequestOptions requestOptions) {
@@ -2335,40 +2074,16 @@ private Mono> listDiscoGroupSinglePageAsync(RequestOpt
 
     /**
      * Retrieve a list of discovery group for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -2449,40 +2164,16 @@ public PagedFlux listDiscoGroupAsync(RequestOptions requestOptions)
 
     /**
      * Retrieve a list of discovery group for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -2544,40 +2235,16 @@ private PagedResponse listDiscoGroupSinglePage(RequestOptions reques
 
     /**
      * Retrieve a list of discovery group for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -2658,9 +2325,7 @@ public PagedIterable listDiscoGroup(RequestOptions requestOptions) {
 
     /**
      * Validate a discovery group with a given groupName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Optional)
@@ -2682,9 +2347,7 @@ public PagedIterable listDiscoGroup(RequestOptions requestOptions) {
      *     templateId: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     error (Optional): {
@@ -2721,9 +2384,7 @@ public Mono> validateDiscoGroupWithResponseAsync(BinaryData
 
     /**
      * Validate a discovery group with a given groupName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Optional)
@@ -2745,9 +2406,7 @@ public Mono> validateDiscoGroupWithResponseAsync(BinaryData
      *     templateId: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     error (Optional): {
@@ -2784,9 +2443,7 @@ public Response validateDiscoGroupWithResponse(BinaryData discoGroup
 
     /**
      * Retrieve a discovery group with a given groupName.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -2847,9 +2504,7 @@ public Mono> getDiscoGroupWithResponseAsync(String groupNam
 
     /**
      * Retrieve a discovery group with a given groupName.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -2910,9 +2565,7 @@ public Response getDiscoGroupWithResponse(String groupName, RequestO
 
     /**
      * Create a discovery group with a given groupName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Optional)
@@ -2934,9 +2587,7 @@ public Response getDiscoGroupWithResponse(String groupName, RequestO
      *     templateId: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -2999,9 +2650,7 @@ public Mono> createOrReplaceDiscoGroupWithResponseAsync(Str
 
     /**
      * Create a discovery group with a given groupName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     name: String (Optional)
@@ -3023,9 +2672,7 @@ public Mono> createOrReplaceDiscoGroupWithResponseAsync(Str
      *     templateId: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -3126,40 +2773,16 @@ public Response runDiscoGroupWithResponse(String groupName, RequestOptions
 
     /**
      * Retrieve a collection of discovery run results for a discovery group with a given groupName.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     submittedDate: OffsetDateTime (Optional)
@@ -3204,40 +2827,16 @@ private Mono> listRunsSinglePageAsync(String groupName
 
     /**
      * Retrieve a collection of discovery run results for a discovery group with a given groupName.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     submittedDate: OffsetDateTime (Optional)
@@ -3300,40 +2899,16 @@ public PagedFlux listRunsAsync(String groupName, RequestOptions requ
 
     /**
      * Retrieve a collection of discovery run results for a discovery group with a given groupName.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     submittedDate: OffsetDateTime (Optional)
@@ -3377,40 +2952,16 @@ private PagedResponse listRunsSinglePage(String groupName, RequestOp
 
     /**
      * Retrieve a collection of discovery run results for a discovery group with a given groupName.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     submittedDate: OffsetDateTime (Optional)
@@ -3473,40 +3024,16 @@ public PagedIterable listRuns(String groupName, RequestOptions reque
 
     /**
      * Retrieve a list of disco templates for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3534,8 +3061,7 @@ public PagedIterable listRuns(String groupName, RequestOptions reque
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of DiscoTemplate items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of DiscoTemplate items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listDiscoTemplateSinglePageAsync(RequestOptions requestOptions) {
@@ -3550,40 +3076,16 @@ private Mono> listDiscoTemplateSinglePageAsync(Request
 
     /**
      * Retrieve a list of disco templates for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3644,40 +3146,16 @@ public PagedFlux listDiscoTemplateAsync(RequestOptions requestOption
 
     /**
      * Retrieve a list of disco templates for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3719,40 +3197,16 @@ private PagedResponse listDiscoTemplateSinglePage(RequestOptions req
 
     /**
      * Retrieve a list of disco templates for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3813,9 +3267,7 @@ public PagedIterable listDiscoTemplate(RequestOptions requestOptions
 
     /**
      * Retrieve a disco template with a given templateId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3844,8 +3296,7 @@ public PagedIterable listDiscoTemplate(RequestOptions requestOptions
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the items in the current page of results along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the items in the current page of results along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getDiscoTemplateWithResponseAsync(String templateId,
@@ -3858,9 +3309,7 @@ public Mono> getDiscoTemplateWithResponseAsync(String templ
 
     /**
      * Retrieve a disco template with a given templateId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3901,9 +3350,7 @@ public Response getDiscoTemplateWithResponse(String templateId, Requ
 
     /**
      * Get billable assets summary for the workspace.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     assetSummaries (Optional): [
@@ -3926,8 +3373,7 @@ public Response getDiscoTemplateWithResponse(String templateId, Requ
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return billable assets summary for the workspace along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return billable assets summary for the workspace along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getBillableWithResponseAsync(RequestOptions requestOptions) {
@@ -3939,9 +3385,7 @@ public Mono> getBillableWithResponseAsync(RequestOptions re
 
     /**
      * Get billable assets summary for the workspace.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     assetSummaries (Optional): [
@@ -3975,9 +3419,7 @@ public Response getBillableWithResponse(RequestOptions requestOption
 
     /**
      * Get the most recent snapshot of asset summary values for the snapshot request.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metric: String (Optional)
@@ -3986,9 +3428,7 @@ public Response getBillableWithResponse(RequestOptions requestOption
      *     page: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     displayName: String (Optional)
@@ -4002,6 +3442,7 @@ public Response getBillableWithResponse(RequestOptions requestOption
      *         nextLink: String (Optional)
      *         value (Optional): [
      *              (Optional){
+     *                 kind: String (Optional)
      *                 id: String (Required)
      *                 name: String (Optional)
      *                 displayName: String (Optional)
@@ -4037,8 +3478,7 @@ public Response getBillableWithResponse(RequestOptions requestOption
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the most recent snapshot of asset summary values for the snapshot request along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return the most recent snapshot of asset summary values for the snapshot request along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getSnapshotWithResponseAsync(BinaryData reportAssetSnapshotRequest,
@@ -4051,9 +3491,7 @@ public Mono> getSnapshotWithResponseAsync(BinaryData report
 
     /**
      * Get the most recent snapshot of asset summary values for the snapshot request.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metric: String (Optional)
@@ -4062,9 +3500,7 @@ public Mono> getSnapshotWithResponseAsync(BinaryData report
      *     page: Integer (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     displayName: String (Optional)
@@ -4078,6 +3514,7 @@ public Mono> getSnapshotWithResponseAsync(BinaryData report
      *         nextLink: String (Optional)
      *         value (Optional): [
      *              (Optional){
+     *                 kind: String (Optional)
      *                 id: String (Required)
      *                 name: String (Optional)
      *                 displayName: String (Optional)
@@ -4126,9 +3563,7 @@ public Response getSnapshotWithResponse(BinaryData reportAssetSnapsh
 
     /**
      * Get asset summary details for the summary request.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metricCategories (Optional): [
@@ -4145,9 +3580,7 @@ public Response getSnapshotWithResponse(BinaryData reportAssetSnapsh
      *     labelName: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     assetSummaries (Optional): [
@@ -4169,15 +3602,13 @@ public Response getSnapshotWithResponse(BinaryData reportAssetSnapsh
      * }
      * }
* - * @param reportAssetSummaryRequest A request body used to retrieve summary asset information. One and only one - * collection of summary identifiers must be provided: filters, metrics, or metricCategories. + * @param reportAssetSummaryRequest A request body used to retrieve summary asset information. One and only one collection of summary identifiers must be provided: filters, metrics, or metricCategories. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return asset summary details for the summary request along with {@link Response} on successful completion of - * {@link Mono}. + * @return asset summary details for the summary request along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) public Mono> getSummaryWithResponseAsync(BinaryData reportAssetSummaryRequest, @@ -4190,9 +3621,7 @@ public Mono> getSummaryWithResponseAsync(BinaryData reportA /** * Get asset summary details for the summary request. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metricCategories (Optional): [
@@ -4209,9 +3638,7 @@ public Mono> getSummaryWithResponseAsync(BinaryData reportA
      *     labelName: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     assetSummaries (Optional): [
@@ -4233,8 +3660,7 @@ public Mono> getSummaryWithResponseAsync(BinaryData reportA
      * }
      * }
* - * @param reportAssetSummaryRequest A request body used to retrieve summary asset information. One and only one - * collection of summary identifiers must be provided: filters, metrics, or metricCategories. + * @param reportAssetSummaryRequest A request body used to retrieve summary asset information. One and only one collection of summary identifiers must be provided: filters, metrics, or metricCategories. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -4253,40 +3679,16 @@ public Response getSummaryWithResponse(BinaryData reportAssetSummary /** * Retrieve a list of saved filters for the provided search parameters. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -4302,8 +3704,7 @@ public Response getSummaryWithResponse(BinaryData reportAssetSummary
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of SavedFilter items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of SavedFilter items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listSavedFilterSinglePageAsync(RequestOptions requestOptions) {
@@ -4318,40 +3719,16 @@ private Mono> listSavedFilterSinglePageAsync(RequestOp
 
     /**
      * Retrieve a list of saved filters for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -4400,40 +3777,16 @@ public PagedFlux listSavedFilterAsync(RequestOptions requestOptions)
 
     /**
      * Retrieve a list of saved filters for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -4463,40 +3816,16 @@ private PagedResponse listSavedFilterSinglePage(RequestOptions reque
 
     /**
      * Retrieve a list of saved filters for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -4545,9 +3874,7 @@ public PagedIterable listSavedFilter(RequestOptions requestOptions)
 
     /**
      * Retrieve a saved filter by filterName.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -4577,9 +3904,7 @@ public Mono> getSavedFilterWithResponseAsync(String filterN
 
     /**
      * Retrieve a saved filter by filterName.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -4608,18 +3933,14 @@ public Response getSavedFilterWithResponse(String filterName, Reques
 
     /**
      * Create or replace a saved filter with a given filterName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     filter: String (Required)
      *     description: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -4650,18 +3971,14 @@ public Mono> createOrReplaceSavedFilterWithResponseAsync(St
 
     /**
      * Create or replace a saved filter with a given filterName.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     filter: String (Required)
      *     description: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -4730,46 +4047,17 @@ public Response deleteSavedFilterWithResponse(String filterName, RequestOp
 
     /**
      * Retrieve a list of tasks for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -4805,46 +4093,17 @@ private Mono> listTaskSinglePageAsync(RequestOptions r
 
     /**
      * Retrieve a list of tasks for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -4898,46 +4157,17 @@ public PagedFlux listTaskAsync(RequestOptions requestOptions) {
 
     /**
      * Retrieve a list of tasks for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -4972,46 +4202,17 @@ private PagedResponse listTaskSinglePage(RequestOptions requestOptio
 
     /**
      * Retrieve a list of tasks for the provided search parameters.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
Query Parameters
NameTypeRequiredDescription
filterStringNoFilter the result list using the given expression.
orderbyStringNoA list of expressions that specify the order of the returned resources.
skipIntegerNoThe number of result items to skip.
maxpagesizeIntegerNoThe maximum number of result items per page.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -5065,9 +4266,7 @@ public PagedIterable listTask(RequestOptions requestOptions) {
 
     /**
      * Retrieve a task by taskId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -5101,9 +4300,7 @@ public Mono> getTaskWithResponseAsync(String taskId, Reques
 
     /**
      * Retrieve a task by taskId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -5137,9 +4334,7 @@ public Response getTaskWithResponse(String taskId, RequestOptions re
 
     /**
      * Cancel a task by taskId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -5173,9 +4368,7 @@ public Mono> cancelTaskWithResponseAsync(String taskId, Req
 
     /**
      * Cancel a task by taskId.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -5209,11 +4402,10 @@ public Response cancelTaskWithResponse(String taskId, RequestOptions
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Required)
      *     name: String (Optional)
      *     displayName: String (Optional)
@@ -5248,8 +4440,7 @@ public Response cancelTaskWithResponse(String taskId, RequestOptions
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of AssetResource items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of AssetResource items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listAssetResourceNextSinglePageAsync(String nextLink,
@@ -5265,11 +4456,10 @@ private Mono> listAssetResourceNextSinglePageAsync(Str
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Required)
      *     name: String (Optional)
      *     displayName: String (Optional)
@@ -5318,11 +4508,10 @@ private PagedResponse listAssetResourceNextSinglePage(String nextLin
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -5345,8 +4534,7 @@ private PagedResponse listAssetResourceNextSinglePage(String nextLin
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of DataConnection items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of DataConnection items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listDataConnectionNextSinglePageAsync(String nextLink,
@@ -5362,11 +4550,10 @@ private Mono> listDataConnectionNextSinglePageAsync(St
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
+     *     kind: String (Optional)
      *     id: String (Optional)
      *     name: String (Required)
      *     displayName: String (Optional)
@@ -5403,9 +4590,7 @@ private PagedResponse listDataConnectionNextSinglePage(String nextLi
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -5456,8 +4641,7 @@ private PagedResponse listDataConnectionNextSinglePage(String nextLi
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of DiscoGroup items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of DiscoGroup items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listDiscoGroupNextSinglePageAsync(String nextLink,
@@ -5472,9 +4656,7 @@ private Mono> listDiscoGroupNextSinglePageAsync(String
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -5539,9 +4721,7 @@ private PagedResponse listDiscoGroupNextSinglePage(String nextLink,
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     submittedDate: OffsetDateTime (Optional)
@@ -5588,9 +4768,7 @@ private Mono> listRunsNextSinglePageAsync(String nextL
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     submittedDate: OffsetDateTime (Optional)
@@ -5635,9 +4813,7 @@ private PagedResponse listRunsNextSinglePage(String nextLink, Reques
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -5668,8 +4844,7 @@ private PagedResponse listRunsNextSinglePage(String nextLink, Reques
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of DiscoTemplate items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of DiscoTemplate items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listDiscoTemplateNextSinglePageAsync(String nextLink,
@@ -5685,9 +4860,7 @@ private Mono> listDiscoTemplateNextSinglePageAsync(Str
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -5732,9 +4905,7 @@ private PagedResponse listDiscoTemplateNextSinglePage(String nextLin
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -5753,8 +4924,7 @@ private PagedResponse listDiscoTemplateNextSinglePage(String nextLin
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return paged collection of SavedFilter items along with {@link PagedResponse} on successful completion of
-     * {@link Mono}.
+     * @return paged collection of SavedFilter items along with {@link PagedResponse} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> listSavedFilterNextSinglePageAsync(String nextLink,
@@ -5769,9 +4939,7 @@ private Mono> listSavedFilterNextSinglePageAsync(Strin
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Optional)
@@ -5804,9 +4972,7 @@ private PagedResponse listSavedFilterNextSinglePage(String nextLink,
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -5845,9 +5011,7 @@ private Mono> listTaskNextSinglePageAsync(String nextL
 
     /**
      * Get the next page of items.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AlexaDetails.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AlexaDetails.java
index 67a5ded022f7..3c4992cf8524 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AlexaDetails.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AlexaDetails.java
@@ -5,55 +5,54 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * The AlexaDetails model.
  */
 @Immutable
-public final class AlexaDetails {
+public final class AlexaDetails implements JsonSerializable {
 
     /*
      * The alexaRank property.
      */
     @Generated
-    @JsonProperty(value = "alexaRank")
     private Long alexaRank;
 
     /*
      * The category property.
      */
     @Generated
-    @JsonProperty(value = "category")
     private String category;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /**
@@ -122,4 +121,58 @@ public Long getCount() {
     public Boolean isRecent() {
         return this.recent;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("alexaRank", this.alexaRank);
+        jsonWriter.writeStringField("category", this.category);
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeBooleanField("recent", this.recent);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AlexaDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AlexaDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AlexaDetails.
+     */
+    @Generated
+    public static AlexaDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AlexaDetails deserializedAlexaDetails = new AlexaDetails();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("alexaRank".equals(fieldName)) {
+                    deserializedAlexaDetails.alexaRank = reader.getNullable(JsonReader::getLong);
+                } else if ("category".equals(fieldName)) {
+                    deserializedAlexaDetails.category = reader.getString();
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedAlexaDetails.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedAlexaDetails.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedAlexaDetails.count = reader.getNullable(JsonReader::getLong);
+                } else if ("recent".equals(fieldName)) {
+                    deserializedAlexaDetails.recent = reader.getNullable(JsonReader::getBoolean);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedAlexaDetails;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AsAsset.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AsAsset.java
index 427f99e93c14..ce7809de8d9f 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AsAsset.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AsAsset.java
@@ -5,8 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -19,175 +23,150 @@ public final class AsAsset extends InventoryAsset {
      * The asn property.
      */
     @Generated
-    @JsonProperty(value = "asn")
     private Long asn;
 
     /*
      * The asNames property.
      */
     @Generated
-    @JsonProperty(value = "asNames")
     private List asNames;
 
     /*
      * The orgNames property.
      */
     @Generated
-    @JsonProperty(value = "orgNames")
     private List orgNames;
 
     /*
      * The orgIds property.
      */
     @Generated
-    @JsonProperty(value = "orgIds")
     private List orgIds;
 
     /*
      * The countries property.
      */
     @Generated
-    @JsonProperty(value = "countries")
     private List countries;
 
     /*
      * The registries property.
      */
     @Generated
-    @JsonProperty(value = "registries")
     private List registries;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The registrarCreatedAt property.
      */
     @Generated
-    @JsonProperty(value = "registrarCreatedAt")
     private List registrarCreatedAt;
 
     /*
      * The registrarUpdatedAt property.
      */
     @Generated
-    @JsonProperty(value = "registrarUpdatedAt")
     private List registrarUpdatedAt;
 
     /*
      * The registrantContacts property.
      */
     @Generated
-    @JsonProperty(value = "registrantContacts")
     private List registrantContacts;
 
     /*
      * The adminContacts property.
      */
     @Generated
-    @JsonProperty(value = "adminContacts")
     private List adminContacts;
 
     /*
      * The technicalContacts property.
      */
     @Generated
-    @JsonProperty(value = "technicalContacts")
     private List technicalContacts;
 
     /*
      * The registrarNames property.
      */
     @Generated
-    @JsonProperty(value = "registrarNames")
     private List registrarNames;
 
     /*
      * The registrantNames property.
      */
     @Generated
-    @JsonProperty(value = "registrantNames")
     private List registrantNames;
 
     /*
      * The adminNames property.
      */
     @Generated
-    @JsonProperty(value = "adminNames")
     private List adminNames;
 
     /*
      * The technicalNames property.
      */
     @Generated
-    @JsonProperty(value = "technicalNames")
     private List technicalNames;
 
     /*
      * The adminOrgs property.
      */
     @Generated
-    @JsonProperty(value = "adminOrgs")
     private List adminOrgs;
 
     /*
      * The technicalOrgs property.
      */
     @Generated
-    @JsonProperty(value = "technicalOrgs")
     private List technicalOrgs;
 
     /*
      * The registrantPhones property.
      */
     @Generated
-    @JsonProperty(value = "registrantPhones")
     private List registrantPhones;
 
     /*
      * The adminPhones property.
      */
     @Generated
-    @JsonProperty(value = "adminPhones")
     private List adminPhones;
 
     /*
      * The technicalPhones property.
      */
     @Generated
-    @JsonProperty(value = "technicalPhones")
     private List technicalPhones;
 
     /*
      * The detailedFromWhoisAt property.
      */
     @Generated
-    @JsonProperty(value = "detailedFromWhoisAt")
     private OffsetDateTime detailedFromWhoisAt;
 
     /**
@@ -446,4 +425,153 @@ public List getTechnicalPhones() {
     public OffsetDateTime getDetailedFromWhoisAt() {
         return this.detailedFromWhoisAt;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("asn", this.asn);
+        jsonWriter.writeArrayField("asNames", this.asNames, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("orgNames", this.orgNames, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("orgIds", this.orgIds, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("countries", this.countries, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registries", this.registries, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeArrayField("registrarCreatedAt", this.registrarCreatedAt,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrarUpdatedAt", this.registrarUpdatedAt,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrantContacts", this.registrantContacts,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("adminContacts", this.adminContacts, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("technicalContacts", this.technicalContacts,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrarNames", this.registrarNames,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrantNames", this.registrantNames,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("adminNames", this.adminNames, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("technicalNames", this.technicalNames,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("adminOrgs", this.adminOrgs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("technicalOrgs", this.technicalOrgs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrantPhones", this.registrantPhones,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("adminPhones", this.adminPhones, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("technicalPhones", this.technicalPhones,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("detailedFromWhoisAt",
+            this.detailedFromWhoisAt == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.detailedFromWhoisAt));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AsAsset from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AsAsset if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AsAsset.
+     */
+    @Generated
+    public static AsAsset fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AsAsset deserializedAsAsset = new AsAsset();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("asn".equals(fieldName)) {
+                    deserializedAsAsset.asn = reader.getNullable(JsonReader::getLong);
+                } else if ("asNames".equals(fieldName)) {
+                    List asNames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.asNames = asNames;
+                } else if ("orgNames".equals(fieldName)) {
+                    List orgNames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.orgNames = orgNames;
+                } else if ("orgIds".equals(fieldName)) {
+                    List orgIds = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.orgIds = orgIds;
+                } else if ("countries".equals(fieldName)) {
+                    List countries = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.countries = countries;
+                } else if ("registries".equals(fieldName)) {
+                    List registries = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.registries = registries;
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedAsAsset.sources = sources;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedAsAsset.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedAsAsset.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedAsAsset.count = reader.getNullable(JsonReader::getLong);
+                } else if ("registrarCreatedAt".equals(fieldName)) {
+                    List registrarCreatedAt = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedAsAsset.registrarCreatedAt = registrarCreatedAt;
+                } else if ("registrarUpdatedAt".equals(fieldName)) {
+                    List registrarUpdatedAt = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedAsAsset.registrarUpdatedAt = registrarUpdatedAt;
+                } else if ("registrantContacts".equals(fieldName)) {
+                    List registrantContacts
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.registrantContacts = registrantContacts;
+                } else if ("adminContacts".equals(fieldName)) {
+                    List adminContacts = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.adminContacts = adminContacts;
+                } else if ("technicalContacts".equals(fieldName)) {
+                    List technicalContacts
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.technicalContacts = technicalContacts;
+                } else if ("registrarNames".equals(fieldName)) {
+                    List registrarNames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.registrarNames = registrarNames;
+                } else if ("registrantNames".equals(fieldName)) {
+                    List registrantNames
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.registrantNames = registrantNames;
+                } else if ("adminNames".equals(fieldName)) {
+                    List adminNames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.adminNames = adminNames;
+                } else if ("technicalNames".equals(fieldName)) {
+                    List technicalNames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.technicalNames = technicalNames;
+                } else if ("adminOrgs".equals(fieldName)) {
+                    List adminOrgs = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.adminOrgs = adminOrgs;
+                } else if ("technicalOrgs".equals(fieldName)) {
+                    List technicalOrgs = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.technicalOrgs = technicalOrgs;
+                } else if ("registrantPhones".equals(fieldName)) {
+                    List registrantPhones
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.registrantPhones = registrantPhones;
+                } else if ("adminPhones".equals(fieldName)) {
+                    List adminPhones = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.adminPhones = adminPhones;
+                } else if ("technicalPhones".equals(fieldName)) {
+                    List technicalPhones
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedAsAsset.technicalPhones = technicalPhones;
+                } else if ("detailedFromWhoisAt".equals(fieldName)) {
+                    deserializedAsAsset.detailedFromWhoisAt
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedAsAsset;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AsAssetResource.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AsAssetResource.java
index 81d9532f1f23..3da5f180bb01 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AsAssetResource.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AsAssetResource.java
@@ -5,16 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 /**
  * The AsAssetResource model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("as")
 @Immutable
 public final class AsAssetResource extends AssetResource {
 
@@ -22,8 +23,7 @@ public final class AsAssetResource extends AssetResource {
      * asset
      */
     @Generated
-    @JsonProperty(value = "asset")
-    private AsAsset asset;
+    private final AsAsset asset;
 
     /**
      * Creates an instance of AsAssetResource class.
@@ -31,8 +31,8 @@ public final class AsAssetResource extends AssetResource {
      * @param asset the asset value to set.
      */
     @Generated
-    @JsonCreator
-    private AsAssetResource(@JsonProperty(value = "asset") AsAsset asset) {
+    private AsAssetResource(AsAsset asset) {
+        setKind("as");
         this.asset = asset;
     }
 
@@ -45,4 +45,112 @@ private AsAssetResource(@JsonProperty(value = "asset") AsAsset asset) {
     public AsAsset getAsset() {
         return this.asset;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeStringField("name", getName());
+        jsonWriter.writeStringField("displayName", getDisplayName());
+        jsonWriter.writeStringField("uuid", getUuid());
+        jsonWriter.writeStringField("createdDate",
+            getCreatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getCreatedDate()));
+        jsonWriter.writeStringField("updatedDate",
+            getUpdatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getUpdatedDate()));
+        jsonWriter.writeStringField("state", getState() == null ? null : getState().toString());
+        jsonWriter.writeStringField("externalId", getExternalId());
+        jsonWriter.writeArrayField("labels", getLabels(), (writer, element) -> writer.writeString(element));
+        jsonWriter.writeBooleanField("wildcard", isWildcard());
+        jsonWriter.writeStringField("discoGroupName", getDiscoGroupName());
+        jsonWriter.writeArrayField("auditTrail", getAuditTrail(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("reason", getReason());
+        jsonWriter.writeJsonField("asset", this.asset);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AsAssetResource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AsAssetResource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AsAssetResource.
+     */
+    @Generated
+    public static AsAssetResource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String kind = "as";
+            String name = null;
+            String displayName = null;
+            String uuid = null;
+            OffsetDateTime createdDate = null;
+            OffsetDateTime updatedDate = null;
+            AssetState state = null;
+            String externalId = null;
+            List labels = null;
+            Boolean wildcard = null;
+            String discoGroupName = null;
+            List auditTrail = null;
+            String reason = null;
+            AsAsset asset = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("uuid".equals(fieldName)) {
+                    uuid = reader.getString();
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("updatedDate".equals(fieldName)) {
+                    updatedDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("state".equals(fieldName)) {
+                    state = AssetState.fromString(reader.getString());
+                } else if ("externalId".equals(fieldName)) {
+                    externalId = reader.getString();
+                } else if ("labels".equals(fieldName)) {
+                    labels = reader.readArray(reader1 -> reader1.getString());
+                } else if ("wildcard".equals(fieldName)) {
+                    wildcard = reader.getNullable(JsonReader::getBoolean);
+                } else if ("discoGroupName".equals(fieldName)) {
+                    discoGroupName = reader.getString();
+                } else if ("auditTrail".equals(fieldName)) {
+                    auditTrail = reader.readArray(reader1 -> AuditTrailItem.fromJson(reader1));
+                } else if ("reason".equals(fieldName)) {
+                    reason = reader.getString();
+                } else if ("asset".equals(fieldName)) {
+                    asset = AsAsset.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            AsAssetResource deserializedAsAssetResource = new AsAssetResource(asset);
+            deserializedAsAssetResource.setId(id);
+            deserializedAsAssetResource.setKind(kind);
+            deserializedAsAssetResource.setName(name);
+            deserializedAsAssetResource.setDisplayName(displayName);
+            deserializedAsAssetResource.setUuid(uuid);
+            deserializedAsAssetResource.setCreatedDate(createdDate);
+            deserializedAsAssetResource.setUpdatedDate(updatedDate);
+            deserializedAsAssetResource.setState(state);
+            deserializedAsAssetResource.setExternalId(externalId);
+            deserializedAsAssetResource.setLabels(labels);
+            deserializedAsAssetResource.setWildcard(wildcard);
+            deserializedAsAssetResource.setDiscoGroupName(discoGroupName);
+            deserializedAsAssetResource.setAuditTrail(auditTrail);
+            deserializedAsAssetResource.setReason(reason);
+            return deserializedAsAssetResource;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetPageResult.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetPageResult.java
index 019921235e94..fd7cf000b8be 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetPageResult.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetPageResult.java
@@ -5,41 +5,41 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The page of assets that match the provided metric.
  */
 @Immutable
-public final class AssetPageResult {
+public final class AssetPageResult implements JsonSerializable {
 
     /*
      * The total number of items available in the full result set.
      */
     @Generated
-    @JsonProperty(value = "totalElements")
     private Long totalElements;
 
     /*
-     * The cursor mark to be used on the next request. Not set if using paging.
+     * The cursor mark to be used on the next request.  Not set if using paging.
      */
     @Generated
-    @JsonProperty(value = "mark")
     private String mark;
 
     /*
-     * The link to access the next page of results. Not set if at the end of the result set.
+     * The link to access the next page of results.  Not set if at the end of the result set.
      */
     @Generated
-    @JsonProperty(value = "nextLink")
     private String nextLink;
 
     /*
      * The items in the current page of results.
      */
     @Generated
-    @JsonProperty(value = "value")
     private List value;
 
     /**
@@ -60,7 +60,7 @@ public Long getTotalElements() {
     }
 
     /**
-     * Get the mark property: The cursor mark to be used on the next request. Not set if using paging.
+     * Get the mark property: The cursor mark to be used on the next request.  Not set if using paging.
      *
      * @return the mark value.
      */
@@ -70,8 +70,7 @@ public String getMark() {
     }
 
     /**
-     * Get the nextLink property: The link to access the next page of results. Not set if at the end of the result
-     * set.
+     * Get the nextLink property: The link to access the next page of results.  Not set if at the end of the result set.
      *
      * @return the nextLink value.
      */
@@ -89,4 +88,49 @@ public String getNextLink() {
     public List getValue() {
         return this.value;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("totalElements", this.totalElements);
+        jsonWriter.writeStringField("mark", this.mark);
+        jsonWriter.writeStringField("nextLink", this.nextLink);
+        jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AssetPageResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AssetPageResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AssetPageResult.
+     */
+    @Generated
+    public static AssetPageResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AssetPageResult deserializedAssetPageResult = new AssetPageResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("totalElements".equals(fieldName)) {
+                    deserializedAssetPageResult.totalElements = reader.getNullable(JsonReader::getLong);
+                } else if ("mark".equals(fieldName)) {
+                    deserializedAssetPageResult.mark = reader.getString();
+                } else if ("nextLink".equals(fieldName)) {
+                    deserializedAssetPageResult.nextLink = reader.getString();
+                } else if ("value".equals(fieldName)) {
+                    List value = reader.readArray(reader1 -> AssetResource.fromJson(reader1));
+                    deserializedAssetPageResult.value = value;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedAssetPageResult;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetResource.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetResource.java
index 7bf8970da840..ebe522d4e52f 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetResource.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetResource.java
@@ -5,123 +5,97 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The items in the current page of results.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "kind",
-    defaultImpl = AssetResource.class)
-@JsonTypeName("AssetResource")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "as", value = AsAssetResource.class),
-    @JsonSubTypes.Type(name = "contact", value = ContactAssetResource.class),
-    @JsonSubTypes.Type(name = "domain", value = DomainAssetResource.class),
-    @JsonSubTypes.Type(name = "host", value = HostAssetResource.class),
-    @JsonSubTypes.Type(name = "ipAddress", value = IpAddressAssetResource.class),
-    @JsonSubTypes.Type(name = "ipBlock", value = IpBlockAssetResource.class),
-    @JsonSubTypes.Type(name = "page", value = PageAssetResource.class),
-    @JsonSubTypes.Type(name = "sslCert", value = SslCertAssetResource.class) })
 @Immutable
-public class AssetResource {
+public class AssetResource implements JsonSerializable {
 
     /*
      * The system generated unique id for the resource.
      */
     @Generated
-    @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY)
     private String id;
 
     /*
      * The caller provided unique name for the resource.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The name that can be used for display purposes.
      */
     @Generated
-    @JsonProperty(value = "displayName")
     private String displayName;
 
     /*
      * Global UUID for the asset.
      */
     @Generated
-    @JsonProperty(value = "uuid")
     private String uuid;
 
     /*
      * The date this asset was first added to this workspace.
      */
     @Generated
-    @JsonProperty(value = "createdDate")
     private OffsetDateTime createdDate;
 
     /*
      * The date this asset was last updated for this workspace.
      */
     @Generated
-    @JsonProperty(value = "updatedDate")
     private OffsetDateTime updatedDate;
 
     /*
      * The state property.
      */
     @Generated
-    @JsonProperty(value = "state")
     private AssetState state;
 
     /*
      * An optional customer provided identifier for this asset.
      */
     @Generated
-    @JsonProperty(value = "externalId")
     private String externalId;
 
     /*
      * Customer labels assigned to this asset.
      */
     @Generated
-    @JsonProperty(value = "labels")
     private List labels;
 
     /*
      * An indicator of whether this asset represents a wildcard rollup of assets on this domain.
      */
     @Generated
-    @JsonProperty(value = "wildcard")
     private Boolean wildcard;
 
     /*
      * The name of the DiscoGroup that brought added this asset to the workspace.
      */
     @Generated
-    @JsonProperty(value = "discoGroupName")
     private String discoGroupName;
 
     /*
      * The history of how this asset was pulled into the workspace through the discovery process.
      */
     @Generated
-    @JsonProperty(value = "auditTrail")
     private List auditTrail;
 
     /*
      * The reason property.
      */
     @Generated
-    @JsonProperty(value = "reason")
     private String reason;
 
     /**
@@ -129,6 +103,7 @@ public class AssetResource {
      */
     @Generated
     protected AssetResource() {
+        this.kind = "AssetResource";
     }
 
     /**
@@ -222,8 +197,7 @@ public List getLabels() {
     }
 
     /**
-     * Get the wildcard property: An indicator of whether this asset represents a wildcard rollup of assets on this
-     * domain.
+     * Get the wildcard property: An indicator of whether this asset represents a wildcard rollup of assets on this domain.
      *
      * @return the wildcard value.
      */
@@ -243,8 +217,7 @@ public String getDiscoGroupName() {
     }
 
     /**
-     * Get the auditTrail property: The history of how this asset was pulled into the workspace through the discovery
-     * process.
+     * Get the auditTrail property: The history of how this asset was pulled into the workspace through the discovery process.
      *
      * @return the auditTrail value.
      */
@@ -262,4 +235,333 @@ public List getAuditTrail() {
     public String getReason() {
         return this.reason;
     }
+
+    /*
+     * The kind of AssetResource
+     */
+    @Generated
+    private String kind;
+
+    /**
+     * Get the kind property: The kind of AssetResource.
+     *
+     * @return the kind value.
+     */
+    @Generated
+    public String getKind() {
+        return this.kind;
+    }
+
+    /**
+     * Set the kind property: The kind of AssetResource.
+     *
+     * @param kind the kind value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setKind(String kind) {
+        this.kind = kind;
+        return this;
+    }
+
+    /**
+     * Set the id property: The system generated unique id for the resource.
+     *
+     * @param id the id value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setId(String id) {
+        this.id = id;
+        return this;
+    }
+
+    /**
+     * Set the name property: The caller provided unique name for the resource.
+     *
+     * @param name the name value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setName(String name) {
+        this.name = name;
+        return this;
+    }
+
+    /**
+     * Set the displayName property: The name that can be used for display purposes.
+     *
+     * @param displayName the displayName value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setDisplayName(String displayName) {
+        this.displayName = displayName;
+        return this;
+    }
+
+    /**
+     * Set the uuid property: Global UUID for the asset.
+     *
+     * @param uuid the uuid value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setUuid(String uuid) {
+        this.uuid = uuid;
+        return this;
+    }
+
+    /**
+     * Set the createdDate property: The date this asset was first added to this workspace.
+     *
+     * @param createdDate the createdDate value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setCreatedDate(OffsetDateTime createdDate) {
+        this.createdDate = createdDate;
+        return this;
+    }
+
+    /**
+     * Set the updatedDate property: The date this asset was last updated for this workspace.
+     *
+     * @param updatedDate the updatedDate value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setUpdatedDate(OffsetDateTime updatedDate) {
+        this.updatedDate = updatedDate;
+        return this;
+    }
+
+    /**
+     * Set the state property: The state property.
+     *
+     * @param state the state value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setState(AssetState state) {
+        this.state = state;
+        return this;
+    }
+
+    /**
+     * Set the externalId property: An optional customer provided identifier for this asset.
+     *
+     * @param externalId the externalId value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setExternalId(String externalId) {
+        this.externalId = externalId;
+        return this;
+    }
+
+    /**
+     * Set the labels property: Customer labels assigned to this asset.
+     *
+     * @param labels the labels value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setLabels(List labels) {
+        this.labels = labels;
+        return this;
+    }
+
+    /**
+     * Set the wildcard property: An indicator of whether this asset represents a wildcard rollup of assets on this domain.
+     *
+     * @param wildcard the wildcard value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setWildcard(Boolean wildcard) {
+        this.wildcard = wildcard;
+        return this;
+    }
+
+    /**
+     * Set the discoGroupName property: The name of the DiscoGroup that brought added this asset to the workspace.
+     *
+     * @param discoGroupName the discoGroupName value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setDiscoGroupName(String discoGroupName) {
+        this.discoGroupName = discoGroupName;
+        return this;
+    }
+
+    /**
+     * Set the auditTrail property: The history of how this asset was pulled into the workspace through the discovery process.
+     *
+     * @param auditTrail the auditTrail value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setAuditTrail(List auditTrail) {
+        this.auditTrail = auditTrail;
+        return this;
+    }
+
+    /**
+     * Set the reason property: The reason property.
+     *
+     * @param reason the reason value to set.
+     * @return the AssetResource object itself.
+     */
+    @Generated
+    AssetResource setReason(String reason) {
+        this.reason = reason;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", this.kind);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("displayName", this.displayName);
+        jsonWriter.writeStringField("uuid", this.uuid);
+        jsonWriter.writeStringField("createdDate",
+            this.createdDate == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.createdDate));
+        jsonWriter.writeStringField("updatedDate",
+            this.updatedDate == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.updatedDate));
+        jsonWriter.writeStringField("state", this.state == null ? null : this.state.toString());
+        jsonWriter.writeStringField("externalId", this.externalId);
+        jsonWriter.writeArrayField("labels", this.labels, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeBooleanField("wildcard", this.wildcard);
+        jsonWriter.writeStringField("discoGroupName", this.discoGroupName);
+        jsonWriter.writeArrayField("auditTrail", this.auditTrail, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("reason", this.reason);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AssetResource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AssetResource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AssetResource.
+     */
+    @Generated
+    public static AssetResource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("kind".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("as".equals(discriminatorValue)) {
+                    return AsAssetResource.fromJson(readerToUse.reset());
+                } else if ("contact".equals(discriminatorValue)) {
+                    return ContactAssetResource.fromJson(readerToUse.reset());
+                } else if ("domain".equals(discriminatorValue)) {
+                    return DomainAssetResource.fromJson(readerToUse.reset());
+                } else if ("host".equals(discriminatorValue)) {
+                    return HostAssetResource.fromJson(readerToUse.reset());
+                } else if ("ipAddress".equals(discriminatorValue)) {
+                    return IpAddressAssetResource.fromJson(readerToUse.reset());
+                } else if ("ipBlock".equals(discriminatorValue)) {
+                    return IpBlockAssetResource.fromJson(readerToUse.reset());
+                } else if ("page".equals(discriminatorValue)) {
+                    return PageAssetResource.fromJson(readerToUse.reset());
+                } else if ("sslCert".equals(discriminatorValue)) {
+                    return SslCertAssetResource.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static AssetResource fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String kind = null;
+            String name = null;
+            String displayName = null;
+            String uuid = null;
+            OffsetDateTime createdDate = null;
+            OffsetDateTime updatedDate = null;
+            AssetState state = null;
+            String externalId = null;
+            List labels = null;
+            Boolean wildcard = null;
+            String discoGroupName = null;
+            List auditTrail = null;
+            String reason = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("uuid".equals(fieldName)) {
+                    uuid = reader.getString();
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("updatedDate".equals(fieldName)) {
+                    updatedDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("state".equals(fieldName)) {
+                    state = AssetState.fromString(reader.getString());
+                } else if ("externalId".equals(fieldName)) {
+                    externalId = reader.getString();
+                } else if ("labels".equals(fieldName)) {
+                    labels = reader.readArray(reader1 -> reader1.getString());
+                } else if ("wildcard".equals(fieldName)) {
+                    wildcard = reader.getNullable(JsonReader::getBoolean);
+                } else if ("discoGroupName".equals(fieldName)) {
+                    discoGroupName = reader.getString();
+                } else if ("auditTrail".equals(fieldName)) {
+                    auditTrail = reader.readArray(reader1 -> AuditTrailItem.fromJson(reader1));
+                } else if ("reason".equals(fieldName)) {
+                    reason = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            AssetResource deserializedAssetResource = new AssetResource();
+            deserializedAssetResource.id = id;
+            deserializedAssetResource.kind = kind;
+            deserializedAssetResource.name = name;
+            deserializedAssetResource.displayName = displayName;
+            deserializedAssetResource.uuid = uuid;
+            deserializedAssetResource.createdDate = createdDate;
+            deserializedAssetResource.updatedDate = updatedDate;
+            deserializedAssetResource.state = state;
+            deserializedAssetResource.externalId = externalId;
+            deserializedAssetResource.labels = labels;
+            deserializedAssetResource.wildcard = wildcard;
+            deserializedAssetResource.discoGroupName = discoGroupName;
+            deserializedAssetResource.auditTrail = auditTrail;
+            deserializedAssetResource.reason = reason;
+            return deserializedAssetResource;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetSecurityPolicy.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetSecurityPolicy.java
index aa705072f186..02acc276c484 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetSecurityPolicy.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetSecurityPolicy.java
@@ -5,70 +5,67 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The AssetSecurityPolicy model.
  */
 @Immutable
-public final class AssetSecurityPolicy {
+public final class AssetSecurityPolicy implements JsonSerializable {
 
     /*
      * The policyName property.
      */
     @Generated
-    @JsonProperty(value = "policyName")
     private String policyName;
 
     /*
      * The isAffected property.
      */
     @Generated
-    @JsonProperty(value = "isAffected")
     private Boolean isAffected;
 
     /*
      * The description property.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /**
@@ -157,4 +154,65 @@ public Boolean isRecent() {
     public List getSources() {
         return this.sources;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("policyName", this.policyName);
+        jsonWriter.writeBooleanField("isAffected", this.isAffected);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeBooleanField("recent", this.recent);
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AssetSecurityPolicy from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AssetSecurityPolicy if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AssetSecurityPolicy.
+     */
+    @Generated
+    public static AssetSecurityPolicy fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AssetSecurityPolicy deserializedAssetSecurityPolicy = new AssetSecurityPolicy();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("policyName".equals(fieldName)) {
+                    deserializedAssetSecurityPolicy.policyName = reader.getString();
+                } else if ("isAffected".equals(fieldName)) {
+                    deserializedAssetSecurityPolicy.isAffected = reader.getNullable(JsonReader::getBoolean);
+                } else if ("description".equals(fieldName)) {
+                    deserializedAssetSecurityPolicy.description = reader.getString();
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedAssetSecurityPolicy.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedAssetSecurityPolicy.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedAssetSecurityPolicy.count = reader.getNullable(JsonReader::getLong);
+                } else if ("recent".equals(fieldName)) {
+                    deserializedAssetSecurityPolicy.recent = reader.getNullable(JsonReader::getBoolean);
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedAssetSecurityPolicy.sources = sources;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedAssetSecurityPolicy;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetState.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetState.java
index bd60827d2ea0..059087cf8d4f 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetState.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetState.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -72,7 +71,6 @@ public AssetState() {
      * @return the corresponding AssetState.
      */
     @Generated
-    @JsonCreator
     public static AssetState fromString(String name) {
         return fromString(name, AssetState.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetSummaryResult.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetSummaryResult.java
index ba753567496a..c21debfd6773 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetSummaryResult.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetSummaryResult.java
@@ -5,87 +5,79 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The collection of asset summaries.
  */
 @Immutable
-public final class AssetSummaryResult {
+public final class AssetSummaryResult implements JsonSerializable {
 
     /*
-     * The name of the summary response. Depending on the request time this will either be the asset filter, risk
-     * category, or risk metric.
+     * The name of the summary response.  Depending on the request time this will either be the asset filter, risk category, or risk metric.
      */
     @Generated
-    @JsonProperty(value = "displayName")
     private String displayName;
 
     /*
-     * The description of the summary response. Filters don't have a description.
+     * The description of the summary response.  Filters don't have a description.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
-     * The last time risk categories or risk metrics were captured. Set to the current time for asset filter requests,
-     * which always pull the live asset data.
+     * The last time risk categories or risk metrics were captured. Set to the current time for asset filter requests, which always pull the live asset data.
      */
     @Generated
-    @JsonProperty(value = "updatedAt")
     private OffsetDateTime updatedAt;
 
     /*
      * If the request is for a metric category, this will contain the requested unique category name.
      */
     @Generated
-    @JsonProperty(value = "metricCategory")
     private String metricCategory;
 
     /*
      * If the request is for a metric, this will contain the requested unique metric name.
      */
     @Generated
-    @JsonProperty(value = "metric")
     private String metric;
 
     /*
      * If the request is for an asset filter, this will contain the corresponding filter.
      */
     @Generated
-    @JsonProperty(value = "filter")
     private String filter;
 
     /*
      * An optional label used to filter requests results.
      */
     @Generated
-    @JsonProperty(value = "labelName")
     private String labelName;
 
     /*
      * The count of assets matching the request parameters.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The link to the corresponding asset details.
      */
     @Generated
-    @JsonProperty(value = "link")
     private String link;
 
     /*
-     * The corresponding child entities. For metric categories this will contain metrics. For filters with groupBy
-     * and segmentBy this will contain facets.
+     * The corresponding child entities.  For metric categories this will contain metrics.  For filters with groupBy and segmentBy this will contain facets.
      */
     @Generated
-    @JsonProperty(value = "children")
     private List children;
 
     /**
@@ -96,8 +88,7 @@ private AssetSummaryResult() {
     }
 
     /**
-     * Get the displayName property: The name of the summary response. Depending on the request time this will either
-     * be the asset filter, risk category, or risk metric.
+     * Get the displayName property: The name of the summary response.  Depending on the request time this will either be the asset filter, risk category, or risk metric.
      *
      * @return the displayName value.
      */
@@ -107,7 +98,7 @@ public String getDisplayName() {
     }
 
     /**
-     * Get the description property: The description of the summary response. Filters don't have a description.
+     * Get the description property: The description of the summary response.  Filters don't have a description.
      *
      * @return the description value.
      */
@@ -117,8 +108,7 @@ public String getDescription() {
     }
 
     /**
-     * Get the updatedAt property: The last time risk categories or risk metrics were captured. Set to the current time
-     * for asset filter requests, which always pull the live asset data.
+     * Get the updatedAt property: The last time risk categories or risk metrics were captured. Set to the current time for asset filter requests, which always pull the live asset data.
      *
      * @return the updatedAt value.
      */
@@ -128,8 +118,7 @@ public OffsetDateTime getUpdatedAt() {
     }
 
     /**
-     * Get the metricCategory property: If the request is for a metric category, this will contain the requested unique
-     * category name.
+     * Get the metricCategory property: If the request is for a metric category, this will contain the requested unique category name.
      *
      * @return the metricCategory value.
      */
@@ -189,8 +178,7 @@ public String getLink() {
     }
 
     /**
-     * Get the children property: The corresponding child entities. For metric categories this will contain metrics.
-     * For filters with groupBy and segmentBy this will contain facets.
+     * Get the children property: The corresponding child entities.  For metric categories this will contain metrics.  For filters with groupBy and segmentBy this will contain facets.
      *
      * @return the children value.
      */
@@ -198,4 +186,70 @@ public String getLink() {
     public List getChildren() {
         return this.children;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("displayName", this.displayName);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("updatedAt",
+            this.updatedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.updatedAt));
+        jsonWriter.writeStringField("metricCategory", this.metricCategory);
+        jsonWriter.writeStringField("metric", this.metric);
+        jsonWriter.writeStringField("filter", this.filter);
+        jsonWriter.writeStringField("labelName", this.labelName);
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeStringField("link", this.link);
+        jsonWriter.writeArrayField("children", this.children, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AssetSummaryResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AssetSummaryResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AssetSummaryResult.
+     */
+    @Generated
+    public static AssetSummaryResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AssetSummaryResult deserializedAssetSummaryResult = new AssetSummaryResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("displayName".equals(fieldName)) {
+                    deserializedAssetSummaryResult.displayName = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    deserializedAssetSummaryResult.description = reader.getString();
+                } else if ("updatedAt".equals(fieldName)) {
+                    deserializedAssetSummaryResult.updatedAt
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("metricCategory".equals(fieldName)) {
+                    deserializedAssetSummaryResult.metricCategory = reader.getString();
+                } else if ("metric".equals(fieldName)) {
+                    deserializedAssetSummaryResult.metric = reader.getString();
+                } else if ("filter".equals(fieldName)) {
+                    deserializedAssetSummaryResult.filter = reader.getString();
+                } else if ("labelName".equals(fieldName)) {
+                    deserializedAssetSummaryResult.labelName = reader.getString();
+                } else if ("count".equals(fieldName)) {
+                    deserializedAssetSummaryResult.count = reader.getNullable(JsonReader::getLong);
+                } else if ("link".equals(fieldName)) {
+                    deserializedAssetSummaryResult.link = reader.getString();
+                } else if ("children".equals(fieldName)) {
+                    List children
+                        = reader.readArray(reader1 -> AssetSummaryResult.fromJson(reader1));
+                    deserializedAssetSummaryResult.children = children;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedAssetSummaryResult;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetUpdateData.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetUpdateData.java
index d27f26c9310d..66f69df15866 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetUpdateData.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetUpdateData.java
@@ -5,41 +5,41 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * A request body used to update an asset.
  */
 @Fluent
-public final class AssetUpdateData {
+public final class AssetUpdateData implements JsonSerializable {
 
     /*
      * The state to update the asset to.
      */
     @Generated
-    @JsonProperty(value = "state")
     private AssetUpdateState state;
 
     /*
      * A string which can be used to identify the asset in external systems.
      */
     @Generated
-    @JsonProperty(value = "externalId")
     private String externalId;
 
     /*
      * Any Labels to update the asset with.
      */
     @Generated
-    @JsonProperty(value = "labels")
     private Map labels;
 
     /*
      * A list of asset types to cascade the updates to.
      */
     @Generated
-    @JsonProperty(value = "transfers")
     private AssetUpdateTransfers transfers;
 
     /**
@@ -136,4 +136,49 @@ public AssetUpdateData setTransfers(AssetUpdateTransfers transfers) {
         this.transfers = transfers;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("state", this.state == null ? null : this.state.toString());
+        jsonWriter.writeStringField("externalId", this.externalId);
+        jsonWriter.writeMapField("labels", this.labels, (writer, element) -> writer.writeBoolean(element));
+        jsonWriter.writeStringField("transfers", this.transfers == null ? null : this.transfers.toString());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AssetUpdateData from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AssetUpdateData if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AssetUpdateData.
+     */
+    @Generated
+    public static AssetUpdateData fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AssetUpdateData deserializedAssetUpdateData = new AssetUpdateData();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("state".equals(fieldName)) {
+                    deserializedAssetUpdateData.state = AssetUpdateState.fromString(reader.getString());
+                } else if ("externalId".equals(fieldName)) {
+                    deserializedAssetUpdateData.externalId = reader.getString();
+                } else if ("labels".equals(fieldName)) {
+                    Map labels = reader.readMap(reader1 -> reader1.getBoolean());
+                    deserializedAssetUpdateData.labels = labels;
+                } else if ("transfers".equals(fieldName)) {
+                    deserializedAssetUpdateData.transfers = AssetUpdateTransfers.fromString(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedAssetUpdateData;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetUpdateState.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetUpdateState.java
index f2bdbfb6ba55..eb0205b568e3 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetUpdateState.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetUpdateState.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -66,7 +65,6 @@ public AssetUpdateState() {
      * @return the corresponding AssetUpdateState.
      */
     @Generated
-    @JsonCreator
     public static AssetUpdateState fromString(String name) {
         return fromString(name, AssetUpdateState.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetUpdateTransfers.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetUpdateTransfers.java
index ec7a59c65406..4a36b740b8d4 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetUpdateTransfers.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AssetUpdateTransfers.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -78,7 +77,6 @@ public AssetUpdateTransfers() {
      * @return the corresponding AssetUpdateTransfers.
      */
     @Generated
-    @JsonCreator
     public static AssetUpdateTransfers fromString(String name) {
         return fromString(name, AssetUpdateTransfers.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Attribute.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Attribute.java
index 921cdcc68fe0..0da6e83c608c 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Attribute.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Attribute.java
@@ -5,63 +5,61 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The Attribute model.
  */
 @Immutable
-public final class Attribute {
+public final class Attribute implements JsonSerializable {
 
     /*
      * The attributeType property.
      */
     @Generated
-    @JsonProperty(value = "attributeType")
     private String attributeType;
 
     /*
      * The attributeValue property.
      */
     @Generated
-    @JsonProperty(value = "attributeValue")
     private String attributeValue;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /**
@@ -140,4 +138,62 @@ public Long getCount() {
     public Boolean isRecent() {
         return this.recent;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("attributeType", this.attributeType);
+        jsonWriter.writeStringField("attributeValue", this.attributeValue);
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeBooleanField("recent", this.recent);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Attribute from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Attribute if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the Attribute.
+     */
+    @Generated
+    public static Attribute fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            Attribute deserializedAttribute = new Attribute();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("attributeType".equals(fieldName)) {
+                    deserializedAttribute.attributeType = reader.getString();
+                } else if ("attributeValue".equals(fieldName)) {
+                    deserializedAttribute.attributeValue = reader.getString();
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedAttribute.sources = sources;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedAttribute.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedAttribute.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedAttribute.count = reader.getNullable(JsonReader::getLong);
+                } else if ("recent".equals(fieldName)) {
+                    deserializedAttribute.recent = reader.getNullable(JsonReader::getBoolean);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedAttribute;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AuditTrailItem.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AuditTrailItem.java
index e571af178c4b..c7e79541ca24 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AuditTrailItem.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AuditTrailItem.java
@@ -5,47 +5,46 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The history of how this asset was pulled into the workspace through the discovery process.
  */
 @Immutable
-public final class AuditTrailItem {
+public final class AuditTrailItem implements JsonSerializable {
 
     /*
      * The system generated unique id for the resource.
      */
     @Generated
-    @JsonProperty(value = "id")
     private String id;
 
     /*
      * The caller provided unique name for the resource.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The name that can be used for display purposes.
      */
     @Generated
-    @JsonProperty(value = "displayName")
     private String displayName;
 
     /*
      * The kind of asset.
      */
     @Generated
-    @JsonProperty(value = "kind")
     private AuditTrailItemKind kind;
 
     /*
      * An explanation of why this audit trail node was discovered from the previous node.
      */
     @Generated
-    @JsonProperty(value = "reason")
     private String reason;
 
     /**
@@ -104,4 +103,51 @@ public AuditTrailItemKind getKind() {
     public String getReason() {
         return this.reason;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("displayName", this.displayName);
+        jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString());
+        jsonWriter.writeStringField("reason", this.reason);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AuditTrailItem from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AuditTrailItem if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AuditTrailItem.
+     */
+    @Generated
+    public static AuditTrailItem fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AuditTrailItem deserializedAuditTrailItem = new AuditTrailItem();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    deserializedAuditTrailItem.id = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAuditTrailItem.name = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    deserializedAuditTrailItem.displayName = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    deserializedAuditTrailItem.kind = AuditTrailItemKind.fromString(reader.getString());
+                } else if ("reason".equals(fieldName)) {
+                    deserializedAuditTrailItem.reason = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedAuditTrailItem;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AuditTrailItemKind.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AuditTrailItemKind.java
index b3f3ec86f3a7..4b91f030eae8 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AuditTrailItemKind.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AuditTrailItemKind.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -78,7 +77,6 @@ public AuditTrailItemKind() {
      * @return the corresponding AuditTrailItemKind.
      */
     @Generated
-    @JsonCreator
     public static AuditTrailItemKind fromString(String name) {
         return fromString(name, AuditTrailItemKind.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AzureDataExplorerDataConnection.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AzureDataExplorerDataConnection.java
index 9f8708af8d75..5dd25f78a773 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AzureDataExplorerDataConnection.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AzureDataExplorerDataConnection.java
@@ -5,16 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
 
 /**
  * The AzureDataExplorerDataConnection model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("azureDataExplorer")
 @Immutable
 public final class AzureDataExplorerDataConnection extends DataConnection {
 
@@ -22,8 +21,7 @@ public final class AzureDataExplorerDataConnection extends DataConnection {
      * properties
      */
     @Generated
-    @JsonProperty(value = "properties")
-    private AzureDataExplorerDataConnectionProperties properties;
+    private final AzureDataExplorerDataConnectionProperties properties;
 
     /**
      * Creates an instance of AzureDataExplorerDataConnection class.
@@ -31,9 +29,8 @@ public final class AzureDataExplorerDataConnection extends DataConnection {
      * @param properties the properties value to set.
      */
     @Generated
-    @JsonCreator
-    private AzureDataExplorerDataConnection(
-        @JsonProperty(value = "properties") AzureDataExplorerDataConnectionProperties properties) {
+    private AzureDataExplorerDataConnection(AzureDataExplorerDataConnectionProperties properties) {
+        setKind("azureDataExplorer");
         this.properties = properties;
     }
 
@@ -46,4 +43,98 @@ private AzureDataExplorerDataConnection(
     public AzureDataExplorerDataConnectionProperties getProperties() {
         return this.properties;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeStringField("displayName", getDisplayName());
+        jsonWriter.writeStringField("content", getContent() == null ? null : getContent().toString());
+        jsonWriter.writeStringField("frequency", getFrequency() == null ? null : getFrequency().toString());
+        jsonWriter.writeNumberField("frequencyOffset", getFrequencyOffset());
+        jsonWriter.writeBooleanField("active", isActive());
+        jsonWriter.writeJsonField("properties", this.properties);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AzureDataExplorerDataConnection from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AzureDataExplorerDataConnection if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AzureDataExplorerDataConnection.
+     */
+    @Generated
+    public static AzureDataExplorerDataConnection fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String name = null;
+            String kind = "azureDataExplorer";
+            String id = null;
+            String displayName = null;
+            DataConnectionContent content = null;
+            OffsetDateTime createdDate = null;
+            DataConnectionFrequency frequency = null;
+            Integer frequencyOffset = null;
+            OffsetDateTime updatedDate = null;
+            OffsetDateTime userUpdatedAt = null;
+            Boolean active = null;
+            String inactiveMessage = null;
+            AzureDataExplorerDataConnectionProperties properties = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("content".equals(fieldName)) {
+                    content = DataConnectionContent.fromString(reader.getString());
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("frequency".equals(fieldName)) {
+                    frequency = DataConnectionFrequency.fromString(reader.getString());
+                } else if ("frequencyOffset".equals(fieldName)) {
+                    frequencyOffset = reader.getNullable(JsonReader::getInt);
+                } else if ("updatedDate".equals(fieldName)) {
+                    updatedDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("userUpdatedAt".equals(fieldName)) {
+                    userUpdatedAt
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("active".equals(fieldName)) {
+                    active = reader.getNullable(JsonReader::getBoolean);
+                } else if ("inactiveMessage".equals(fieldName)) {
+                    inactiveMessage = reader.getString();
+                } else if ("properties".equals(fieldName)) {
+                    properties = AzureDataExplorerDataConnectionProperties.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            AzureDataExplorerDataConnection deserializedAzureDataExplorerDataConnection
+                = new AzureDataExplorerDataConnection(properties);
+            deserializedAzureDataExplorerDataConnection.setName(name);
+            deserializedAzureDataExplorerDataConnection.setKind(kind);
+            deserializedAzureDataExplorerDataConnection.setId(id);
+            deserializedAzureDataExplorerDataConnection.setDisplayName(displayName);
+            deserializedAzureDataExplorerDataConnection.setContent(content);
+            deserializedAzureDataExplorerDataConnection.setCreatedDate(createdDate);
+            deserializedAzureDataExplorerDataConnection.setFrequency(frequency);
+            deserializedAzureDataExplorerDataConnection.setFrequencyOffset(frequencyOffset);
+            deserializedAzureDataExplorerDataConnection.setUpdatedDate(updatedDate);
+            deserializedAzureDataExplorerDataConnection.setUserUpdatedAt(userUpdatedAt);
+            deserializedAzureDataExplorerDataConnection.setActive(active);
+            deserializedAzureDataExplorerDataConnection.setInactiveMessage(inactiveMessage);
+            return deserializedAzureDataExplorerDataConnection;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AzureDataExplorerDataConnectionData.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AzureDataExplorerDataConnectionData.java
index 55d3c7a14877..58769b7f6cf5 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AzureDataExplorerDataConnectionData.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AzureDataExplorerDataConnectionData.java
@@ -5,16 +5,14 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The AzureDataExplorerDataConnectionData model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("azureDataExplorer")
 @Fluent
 public final class AzureDataExplorerDataConnectionData extends DataConnectionData {
 
@@ -22,8 +20,7 @@ public final class AzureDataExplorerDataConnectionData extends DataConnectionDat
      * properties
      */
     @Generated
-    @JsonProperty(value = "properties")
-    private AzureDataExplorerDataConnectionProperties properties;
+    private final AzureDataExplorerDataConnectionProperties properties;
 
     /**
      * Creates an instance of AzureDataExplorerDataConnectionData class.
@@ -31,9 +28,8 @@ public final class AzureDataExplorerDataConnectionData extends DataConnectionDat
      * @param properties the properties value to set.
      */
     @Generated
-    @JsonCreator
-    public AzureDataExplorerDataConnectionData(
-        @JsonProperty(value = "properties") AzureDataExplorerDataConnectionProperties properties) {
+    public AzureDataExplorerDataConnectionData(AzureDataExplorerDataConnectionProperties properties) {
+        setKind("azureDataExplorer");
         this.properties = properties;
     }
 
@@ -86,4 +82,67 @@ public AzureDataExplorerDataConnectionData setFrequencyOffset(Integer frequencyO
         super.setFrequencyOffset(frequencyOffset);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeStringField("name", getName());
+        jsonWriter.writeStringField("content", getContent() == null ? null : getContent().toString());
+        jsonWriter.writeStringField("frequency", getFrequency() == null ? null : getFrequency().toString());
+        jsonWriter.writeNumberField("frequencyOffset", getFrequencyOffset());
+        jsonWriter.writeJsonField("properties", this.properties);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AzureDataExplorerDataConnectionData from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AzureDataExplorerDataConnectionData if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AzureDataExplorerDataConnectionData.
+     */
+    @Generated
+    public static AzureDataExplorerDataConnectionData fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String kind = "azureDataExplorer";
+            String name = null;
+            DataConnectionContent content = null;
+            DataConnectionFrequency frequency = null;
+            Integer frequencyOffset = null;
+            AzureDataExplorerDataConnectionProperties properties = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("content".equals(fieldName)) {
+                    content = DataConnectionContent.fromString(reader.getString());
+                } else if ("frequency".equals(fieldName)) {
+                    frequency = DataConnectionFrequency.fromString(reader.getString());
+                } else if ("frequencyOffset".equals(fieldName)) {
+                    frequencyOffset = reader.getNullable(JsonReader::getInt);
+                } else if ("properties".equals(fieldName)) {
+                    properties = AzureDataExplorerDataConnectionProperties.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            AzureDataExplorerDataConnectionData deserializedAzureDataExplorerDataConnectionData
+                = new AzureDataExplorerDataConnectionData(properties);
+            deserializedAzureDataExplorerDataConnectionData.setKind(kind);
+            deserializedAzureDataExplorerDataConnectionData.setName(name);
+            deserializedAzureDataExplorerDataConnectionData.setContent(content);
+            deserializedAzureDataExplorerDataConnectionData.setFrequency(frequency);
+            deserializedAzureDataExplorerDataConnectionData.setFrequencyOffset(frequencyOffset);
+            return deserializedAzureDataExplorerDataConnectionData;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AzureDataExplorerDataConnectionProperties.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AzureDataExplorerDataConnectionProperties.java
index 94eea9396737..e060308f6bea 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AzureDataExplorerDataConnectionProperties.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/AzureDataExplorerDataConnectionProperties.java
@@ -5,7 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The AzureDataExplorerDataConnectionProperties model.
@@ -17,21 +20,18 @@ public final class AzureDataExplorerDataConnectionProperties extends DataConnect
      * The azure data explorer cluster name
      */
     @Generated
-    @JsonProperty(value = "clusterName")
     private String clusterName;
 
     /*
      * The azure data explorer region
      */
     @Generated
-    @JsonProperty(value = "region")
     private String region;
 
     /*
      * The azure data explorer database name
      */
     @Generated
-    @JsonProperty(value = "databaseName")
     private String databaseName;
 
     /**
@@ -106,4 +106,46 @@ public AzureDataExplorerDataConnectionProperties setDatabaseName(String database
         this.databaseName = databaseName;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("clusterName", this.clusterName);
+        jsonWriter.writeStringField("region", this.region);
+        jsonWriter.writeStringField("databaseName", this.databaseName);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AzureDataExplorerDataConnectionProperties from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AzureDataExplorerDataConnectionProperties if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AzureDataExplorerDataConnectionProperties.
+     */
+    @Generated
+    public static AzureDataExplorerDataConnectionProperties fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AzureDataExplorerDataConnectionProperties deserializedAzureDataExplorerDataConnectionProperties
+                = new AzureDataExplorerDataConnectionProperties();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("clusterName".equals(fieldName)) {
+                    deserializedAzureDataExplorerDataConnectionProperties.clusterName = reader.getString();
+                } else if ("region".equals(fieldName)) {
+                    deserializedAzureDataExplorerDataConnectionProperties.region = reader.getString();
+                } else if ("databaseName".equals(fieldName)) {
+                    deserializedAzureDataExplorerDataConnectionProperties.databaseName = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedAzureDataExplorerDataConnectionProperties;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Banner.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Banner.java
index c0fee8cc9522..f0bdb3aa67fe 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Banner.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Banner.java
@@ -5,84 +5,79 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The Banner model.
  */
 @Immutable
-public final class Banner {
+public final class Banner implements JsonSerializable {
 
     /*
      * The port property.
      */
     @Generated
-    @JsonProperty(value = "port")
     private Integer port;
 
     /*
      * The banner property.
      */
     @Generated
-    @JsonProperty(value = "banner")
     private String banner;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The scanType property.
      */
     @Generated
-    @JsonProperty(value = "scanType")
     private String scanType;
 
     /*
      * The bannerMetadata property.
      */
     @Generated
-    @JsonProperty(value = "bannerMetadata")
     private String bannerMetadata;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /*
      * The sha256 property.
      */
     @Generated
-    @JsonProperty(value = "sha256")
     private String sha256;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /**
@@ -191,4 +186,71 @@ public String getSha256() {
     public List getSources() {
         return this.sources;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("port", this.port);
+        jsonWriter.writeStringField("banner", this.banner);
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeStringField("scanType", this.scanType);
+        jsonWriter.writeStringField("bannerMetadata", this.bannerMetadata);
+        jsonWriter.writeBooleanField("recent", this.recent);
+        jsonWriter.writeStringField("sha256", this.sha256);
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Banner from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Banner if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the Banner.
+     */
+    @Generated
+    public static Banner fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            Banner deserializedBanner = new Banner();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("port".equals(fieldName)) {
+                    deserializedBanner.port = reader.getNullable(JsonReader::getInt);
+                } else if ("banner".equals(fieldName)) {
+                    deserializedBanner.banner = reader.getString();
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedBanner.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedBanner.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedBanner.count = reader.getNullable(JsonReader::getLong);
+                } else if ("scanType".equals(fieldName)) {
+                    deserializedBanner.scanType = reader.getString();
+                } else if ("bannerMetadata".equals(fieldName)) {
+                    deserializedBanner.bannerMetadata = reader.getString();
+                } else if ("recent".equals(fieldName)) {
+                    deserializedBanner.recent = reader.getNullable(JsonReader::getBoolean);
+                } else if ("sha256".equals(fieldName)) {
+                    deserializedBanner.sha256 = reader.getString();
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedBanner.sources = sources;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedBanner;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ContactAsset.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ContactAsset.java
index 778fbdcf1bd7..5583717fe21e 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ContactAsset.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ContactAsset.java
@@ -5,8 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -19,49 +23,42 @@ public final class ContactAsset extends InventoryAsset {
      * The email property.
      */
     @Generated
-    @JsonProperty(value = "email")
     private String email;
 
     /*
      * The names property.
      */
     @Generated
-    @JsonProperty(value = "names")
     private List names;
 
     /*
      * The organizations property.
      */
     @Generated
-    @JsonProperty(value = "organizations")
     private List organizations;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /**
@@ -140,4 +137,64 @@ public OffsetDateTime getLastSeen() {
     public Long getCount() {
         return this.count;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("email", this.email);
+        jsonWriter.writeArrayField("names", this.names, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("organizations", this.organizations, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ContactAsset from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ContactAsset if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ContactAsset.
+     */
+    @Generated
+    public static ContactAsset fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ContactAsset deserializedContactAsset = new ContactAsset();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("email".equals(fieldName)) {
+                    deserializedContactAsset.email = reader.getString();
+                } else if ("names".equals(fieldName)) {
+                    List names = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedContactAsset.names = names;
+                } else if ("organizations".equals(fieldName)) {
+                    List organizations = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedContactAsset.organizations = organizations;
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedContactAsset.sources = sources;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedContactAsset.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedContactAsset.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedContactAsset.count = reader.getNullable(JsonReader::getLong);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedContactAsset;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ContactAssetResource.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ContactAssetResource.java
index 6d2565450721..e36b8c3301a6 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ContactAssetResource.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ContactAssetResource.java
@@ -5,16 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 /**
  * The ContactAssetResource model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("contact")
 @Immutable
 public final class ContactAssetResource extends AssetResource {
 
@@ -22,8 +23,7 @@ public final class ContactAssetResource extends AssetResource {
      * asset
      */
     @Generated
-    @JsonProperty(value = "asset")
-    private ContactAsset asset;
+    private final ContactAsset asset;
 
     /**
      * Creates an instance of ContactAssetResource class.
@@ -31,8 +31,8 @@ public final class ContactAssetResource extends AssetResource {
      * @param asset the asset value to set.
      */
     @Generated
-    @JsonCreator
-    private ContactAssetResource(@JsonProperty(value = "asset") ContactAsset asset) {
+    private ContactAssetResource(ContactAsset asset) {
+        setKind("contact");
         this.asset = asset;
     }
 
@@ -45,4 +45,112 @@ private ContactAssetResource(@JsonProperty(value = "asset") ContactAsset asset)
     public ContactAsset getAsset() {
         return this.asset;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeStringField("name", getName());
+        jsonWriter.writeStringField("displayName", getDisplayName());
+        jsonWriter.writeStringField("uuid", getUuid());
+        jsonWriter.writeStringField("createdDate",
+            getCreatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getCreatedDate()));
+        jsonWriter.writeStringField("updatedDate",
+            getUpdatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getUpdatedDate()));
+        jsonWriter.writeStringField("state", getState() == null ? null : getState().toString());
+        jsonWriter.writeStringField("externalId", getExternalId());
+        jsonWriter.writeArrayField("labels", getLabels(), (writer, element) -> writer.writeString(element));
+        jsonWriter.writeBooleanField("wildcard", isWildcard());
+        jsonWriter.writeStringField("discoGroupName", getDiscoGroupName());
+        jsonWriter.writeArrayField("auditTrail", getAuditTrail(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("reason", getReason());
+        jsonWriter.writeJsonField("asset", this.asset);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ContactAssetResource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ContactAssetResource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ContactAssetResource.
+     */
+    @Generated
+    public static ContactAssetResource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String kind = "contact";
+            String name = null;
+            String displayName = null;
+            String uuid = null;
+            OffsetDateTime createdDate = null;
+            OffsetDateTime updatedDate = null;
+            AssetState state = null;
+            String externalId = null;
+            List labels = null;
+            Boolean wildcard = null;
+            String discoGroupName = null;
+            List auditTrail = null;
+            String reason = null;
+            ContactAsset asset = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("uuid".equals(fieldName)) {
+                    uuid = reader.getString();
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("updatedDate".equals(fieldName)) {
+                    updatedDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("state".equals(fieldName)) {
+                    state = AssetState.fromString(reader.getString());
+                } else if ("externalId".equals(fieldName)) {
+                    externalId = reader.getString();
+                } else if ("labels".equals(fieldName)) {
+                    labels = reader.readArray(reader1 -> reader1.getString());
+                } else if ("wildcard".equals(fieldName)) {
+                    wildcard = reader.getNullable(JsonReader::getBoolean);
+                } else if ("discoGroupName".equals(fieldName)) {
+                    discoGroupName = reader.getString();
+                } else if ("auditTrail".equals(fieldName)) {
+                    auditTrail = reader.readArray(reader1 -> AuditTrailItem.fromJson(reader1));
+                } else if ("reason".equals(fieldName)) {
+                    reason = reader.getString();
+                } else if ("asset".equals(fieldName)) {
+                    asset = ContactAsset.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            ContactAssetResource deserializedContactAssetResource = new ContactAssetResource(asset);
+            deserializedContactAssetResource.setId(id);
+            deserializedContactAssetResource.setKind(kind);
+            deserializedContactAssetResource.setName(name);
+            deserializedContactAssetResource.setDisplayName(displayName);
+            deserializedContactAssetResource.setUuid(uuid);
+            deserializedContactAssetResource.setCreatedDate(createdDate);
+            deserializedContactAssetResource.setUpdatedDate(updatedDate);
+            deserializedContactAssetResource.setState(state);
+            deserializedContactAssetResource.setExternalId(externalId);
+            deserializedContactAssetResource.setLabels(labels);
+            deserializedContactAssetResource.setWildcard(wildcard);
+            deserializedContactAssetResource.setDiscoGroupName(discoGroupName);
+            deserializedContactAssetResource.setAuditTrail(auditTrail);
+            deserializedContactAssetResource.setReason(reason);
+            return deserializedContactAssetResource;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Cookie.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Cookie.java
index f9bf7b175cc5..bde3c8f82fd4 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Cookie.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Cookie.java
@@ -5,62 +5,60 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * The Cookie model.
  */
 @Immutable
-public final class Cookie {
+public final class Cookie implements JsonSerializable {
 
     /*
      * The cookieName property.
      */
     @Generated
-    @JsonProperty(value = "cookieName")
     private String cookieName;
 
     /*
      * The cookieDomain property.
      */
     @Generated
-    @JsonProperty(value = "cookieDomain")
     private String cookieDomain;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /*
      * The cookieExpiryDate property.
      */
     @Generated
-    @JsonProperty(value = "cookieExpiryDate")
     private OffsetDateTime cookieExpiryDate;
 
     /**
@@ -139,4 +137,65 @@ public Boolean isRecent() {
     public OffsetDateTime getCookieExpiryDate() {
         return this.cookieExpiryDate;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("cookieName", this.cookieName);
+        jsonWriter.writeStringField("cookieDomain", this.cookieDomain);
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeBooleanField("recent", this.recent);
+        jsonWriter.writeStringField("cookieExpiryDate",
+            this.cookieExpiryDate == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.cookieExpiryDate));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Cookie from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Cookie if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the Cookie.
+     */
+    @Generated
+    public static Cookie fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            Cookie deserializedCookie = new Cookie();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("cookieName".equals(fieldName)) {
+                    deserializedCookie.cookieName = reader.getString();
+                } else if ("cookieDomain".equals(fieldName)) {
+                    deserializedCookie.cookieDomain = reader.getString();
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedCookie.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedCookie.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedCookie.count = reader.getNullable(JsonReader::getLong);
+                } else if ("recent".equals(fieldName)) {
+                    deserializedCookie.recent = reader.getNullable(JsonReader::getBoolean);
+                } else if ("cookieExpiryDate".equals(fieldName)) {
+                    deserializedCookie.cookieExpiryDate
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedCookie;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Cve.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Cve.java
index ae73107aeda6..fe31042372b6 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Cve.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Cve.java
@@ -5,40 +5,40 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The Cve model.
  */
 @Immutable
-public final class Cve {
+public final class Cve implements JsonSerializable {
 
     /*
      * The name property.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The cweId property.
      */
     @Generated
-    @JsonProperty(value = "cweId")
     private String cweId;
 
     /*
      * The cvssScore property.
      */
     @Generated
-    @JsonProperty(value = "cvssScore")
     private Double cvssScore;
 
     /*
      * The cvss3Summary property.
      */
     @Generated
-    @JsonProperty(value = "cvss3Summary")
     private Cvss3Summary cvss3Summary;
 
     /**
@@ -87,4 +87,48 @@ public Double getCvssScore() {
     public Cvss3Summary getCvss3Summary() {
         return this.cvss3Summary;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("cweId", this.cweId);
+        jsonWriter.writeNumberField("cvssScore", this.cvssScore);
+        jsonWriter.writeJsonField("cvss3Summary", this.cvss3Summary);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Cve from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Cve if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the Cve.
+     */
+    @Generated
+    public static Cve fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            Cve deserializedCve = new Cve();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    deserializedCve.name = reader.getString();
+                } else if ("cweId".equals(fieldName)) {
+                    deserializedCve.cweId = reader.getString();
+                } else if ("cvssScore".equals(fieldName)) {
+                    deserializedCve.cvssScore = reader.getNullable(JsonReader::getDouble);
+                } else if ("cvss3Summary".equals(fieldName)) {
+                    deserializedCve.cvss3Summary = Cvss3Summary.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedCve;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Cvss3Summary.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Cvss3Summary.java
index 870a77549158..14c282ad60f5 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Cvss3Summary.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Cvss3Summary.java
@@ -5,131 +5,118 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The Cvss3Summary model.
  */
 @Immutable
-public final class Cvss3Summary {
+public final class Cvss3Summary implements JsonSerializable {
 
     /*
      * The version property.
      */
     @Generated
-    @JsonProperty(value = "version")
     private String version;
 
     /*
      * The vectorString property.
      */
     @Generated
-    @JsonProperty(value = "vectorString")
     private String vectorString;
 
     /*
      * The attackVector property.
      */
     @Generated
-    @JsonProperty(value = "attackVector")
     private String attackVector;
 
     /*
      * The attackComplexity property.
      */
     @Generated
-    @JsonProperty(value = "attackComplexity")
     private String attackComplexity;
 
     /*
      * The privilegesRequired property.
      */
     @Generated
-    @JsonProperty(value = "privilegesRequired")
     private String privilegesRequired;
 
     /*
      * The userInteraction property.
      */
     @Generated
-    @JsonProperty(value = "userInteraction")
     private String userInteraction;
 
     /*
      * The scope property.
      */
     @Generated
-    @JsonProperty(value = "scope")
     private String scope;
 
     /*
      * The confidentialityImpact property.
      */
     @Generated
-    @JsonProperty(value = "confidentialityImpact")
     private String confidentialityImpact;
 
     /*
      * The integrityImpact property.
      */
     @Generated
-    @JsonProperty(value = "integrityImpact")
     private String integrityImpact;
 
     /*
      * The availabilityImpact property.
      */
     @Generated
-    @JsonProperty(value = "availabilityImpact")
     private String availabilityImpact;
 
     /*
      * The baseScore property.
      */
     @Generated
-    @JsonProperty(value = "baseScore")
     private Double baseScore;
 
     /*
      * The baseSeverity property.
      */
     @Generated
-    @JsonProperty(value = "baseSeverity")
     private String baseSeverity;
 
     /*
      * The exploitCodeMaturity property.
      */
     @Generated
-    @JsonProperty(value = "exploitCodeMaturity")
     private String exploitCodeMaturity;
 
     /*
      * The remediationLevel property.
      */
     @Generated
-    @JsonProperty(value = "remediationLevel")
     private String remediationLevel;
 
     /*
      * The reportConfidence property.
      */
     @Generated
-    @JsonProperty(value = "reportConfidence")
     private String reportConfidence;
 
     /*
      * The exploitabilityScore property.
      */
     @Generated
-    @JsonProperty(value = "exploitabilityScore")
     private Double exploitabilityScore;
 
     /*
      * The impactScore property.
      */
     @Generated
-    @JsonProperty(value = "impactScore")
     private Double impactScore;
 
     /**
@@ -308,4 +295,87 @@ public Double getExploitabilityScore() {
     public Double getImpactScore() {
         return this.impactScore;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("version", this.version);
+        jsonWriter.writeStringField("vectorString", this.vectorString);
+        jsonWriter.writeStringField("attackVector", this.attackVector);
+        jsonWriter.writeStringField("attackComplexity", this.attackComplexity);
+        jsonWriter.writeStringField("privilegesRequired", this.privilegesRequired);
+        jsonWriter.writeStringField("userInteraction", this.userInteraction);
+        jsonWriter.writeStringField("scope", this.scope);
+        jsonWriter.writeStringField("confidentialityImpact", this.confidentialityImpact);
+        jsonWriter.writeStringField("integrityImpact", this.integrityImpact);
+        jsonWriter.writeStringField("availabilityImpact", this.availabilityImpact);
+        jsonWriter.writeNumberField("baseScore", this.baseScore);
+        jsonWriter.writeStringField("baseSeverity", this.baseSeverity);
+        jsonWriter.writeStringField("exploitCodeMaturity", this.exploitCodeMaturity);
+        jsonWriter.writeStringField("remediationLevel", this.remediationLevel);
+        jsonWriter.writeStringField("reportConfidence", this.reportConfidence);
+        jsonWriter.writeNumberField("exploitabilityScore", this.exploitabilityScore);
+        jsonWriter.writeNumberField("impactScore", this.impactScore);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Cvss3Summary from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Cvss3Summary if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the Cvss3Summary.
+     */
+    @Generated
+    public static Cvss3Summary fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            Cvss3Summary deserializedCvss3Summary = new Cvss3Summary();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("version".equals(fieldName)) {
+                    deserializedCvss3Summary.version = reader.getString();
+                } else if ("vectorString".equals(fieldName)) {
+                    deserializedCvss3Summary.vectorString = reader.getString();
+                } else if ("attackVector".equals(fieldName)) {
+                    deserializedCvss3Summary.attackVector = reader.getString();
+                } else if ("attackComplexity".equals(fieldName)) {
+                    deserializedCvss3Summary.attackComplexity = reader.getString();
+                } else if ("privilegesRequired".equals(fieldName)) {
+                    deserializedCvss3Summary.privilegesRequired = reader.getString();
+                } else if ("userInteraction".equals(fieldName)) {
+                    deserializedCvss3Summary.userInteraction = reader.getString();
+                } else if ("scope".equals(fieldName)) {
+                    deserializedCvss3Summary.scope = reader.getString();
+                } else if ("confidentialityImpact".equals(fieldName)) {
+                    deserializedCvss3Summary.confidentialityImpact = reader.getString();
+                } else if ("integrityImpact".equals(fieldName)) {
+                    deserializedCvss3Summary.integrityImpact = reader.getString();
+                } else if ("availabilityImpact".equals(fieldName)) {
+                    deserializedCvss3Summary.availabilityImpact = reader.getString();
+                } else if ("baseScore".equals(fieldName)) {
+                    deserializedCvss3Summary.baseScore = reader.getNullable(JsonReader::getDouble);
+                } else if ("baseSeverity".equals(fieldName)) {
+                    deserializedCvss3Summary.baseSeverity = reader.getString();
+                } else if ("exploitCodeMaturity".equals(fieldName)) {
+                    deserializedCvss3Summary.exploitCodeMaturity = reader.getString();
+                } else if ("remediationLevel".equals(fieldName)) {
+                    deserializedCvss3Summary.remediationLevel = reader.getString();
+                } else if ("reportConfidence".equals(fieldName)) {
+                    deserializedCvss3Summary.reportConfidence = reader.getString();
+                } else if ("exploitabilityScore".equals(fieldName)) {
+                    deserializedCvss3Summary.exploitabilityScore = reader.getNullable(JsonReader::getDouble);
+                } else if ("impactScore".equals(fieldName)) {
+                    deserializedCvss3Summary.impactScore = reader.getNullable(JsonReader::getDouble);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedCvss3Summary;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnection.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnection.java
index f97cf9330e4c..2f3fd32e4266 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnection.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnection.java
@@ -5,102 +5,83 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
 
 /**
  * The DataConnection model.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "kind",
-    defaultImpl = DataConnection.class)
-@JsonTypeName("DataConnection")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "logAnalytics", value = LogAnalyticsDataConnection.class),
-    @JsonSubTypes.Type(name = "azureDataExplorer", value = AzureDataExplorerDataConnection.class) })
 @Immutable
-public class DataConnection {
+public class DataConnection implements JsonSerializable {
 
     /*
      * The system generated unique id for the resource.
      */
     @Generated
-    @JsonProperty(value = "id")
     private String id;
 
     /*
      * The caller provided unique name for the resource.
      */
     @Generated
-    @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
     private String name;
 
     /*
      * The name that can be used for display purposes.
      */
     @Generated
-    @JsonProperty(value = "displayName")
     private String displayName;
 
     /*
      * The type of data the data connection will transfer
      */
     @Generated
-    @JsonProperty(value = "content")
     private DataConnectionContent content;
 
     /*
      * The date the data connection was created.
      */
     @Generated
-    @JsonProperty(value = "createdDate", access = JsonProperty.Access.WRITE_ONLY)
     private OffsetDateTime createdDate;
 
     /*
      * The rate at which the data connection will receive updates.
      */
     @Generated
-    @JsonProperty(value = "frequency")
     private DataConnectionFrequency frequency;
 
     /*
      * The day to update the data connection on.
      */
     @Generated
-    @JsonProperty(value = "frequencyOffset")
     private Integer frequencyOffset;
 
     /*
      * The date the data connection was last updated.
      */
     @Generated
-    @JsonProperty(value = "updatedDate", access = JsonProperty.Access.WRITE_ONLY)
     private OffsetDateTime updatedDate;
 
     /*
      * The date the data connection was last updated by user.
      */
     @Generated
-    @JsonProperty(value = "userUpdatedAt", access = JsonProperty.Access.WRITE_ONLY)
     private OffsetDateTime userUpdatedAt;
 
     /*
      * An indicator of whether the data connection is active.
      */
     @Generated
-    @JsonProperty(value = "active")
     private Boolean active;
 
     /*
      * A message that specifies details about data connection if inactive.
      */
     @Generated
-    @JsonProperty(value = "inactiveMessage", access = JsonProperty.Access.WRITE_ONLY)
     private String inactiveMessage;
 
     /**
@@ -108,6 +89,7 @@ public class DataConnection {
      */
     @Generated
     protected DataConnection() {
+        this.kind = "DataConnection";
     }
 
     /**
@@ -219,4 +201,282 @@ public Boolean isActive() {
     public String getInactiveMessage() {
         return this.inactiveMessage;
     }
+
+    /*
+     * The kind of DataConnection
+     */
+    @Generated
+    private String kind;
+
+    /**
+     * Get the kind property: The kind of DataConnection.
+     *
+     * @return the kind value.
+     */
+    @Generated
+    public String getKind() {
+        return this.kind;
+    }
+
+    /**
+     * Set the kind property: The kind of DataConnection.
+     *
+     * @param kind the kind value to set.
+     * @return the DataConnection object itself.
+     */
+    @Generated
+    DataConnection setKind(String kind) {
+        this.kind = kind;
+        return this;
+    }
+
+    /**
+     * Set the id property: The system generated unique id for the resource.
+     *
+     * @param id the id value to set.
+     * @return the DataConnection object itself.
+     */
+    @Generated
+    DataConnection setId(String id) {
+        this.id = id;
+        return this;
+    }
+
+    /**
+     * Set the name property: The caller provided unique name for the resource.
+     *
+     * @param name the name value to set.
+     * @return the DataConnection object itself.
+     */
+    @Generated
+    DataConnection setName(String name) {
+        this.name = name;
+        return this;
+    }
+
+    /**
+     * Set the displayName property: The name that can be used for display purposes.
+     *
+     * @param displayName the displayName value to set.
+     * @return the DataConnection object itself.
+     */
+    @Generated
+    DataConnection setDisplayName(String displayName) {
+        this.displayName = displayName;
+        return this;
+    }
+
+    /**
+     * Set the content property: The type of data the data connection will transfer.
+     *
+     * @param content the content value to set.
+     * @return the DataConnection object itself.
+     */
+    @Generated
+    DataConnection setContent(DataConnectionContent content) {
+        this.content = content;
+        return this;
+    }
+
+    /**
+     * Set the createdDate property: The date the data connection was created.
+     *
+     * @param createdDate the createdDate value to set.
+     * @return the DataConnection object itself.
+     */
+    @Generated
+    DataConnection setCreatedDate(OffsetDateTime createdDate) {
+        this.createdDate = createdDate;
+        return this;
+    }
+
+    /**
+     * Set the frequency property: The rate at which the data connection will receive updates.
+     *
+     * @param frequency the frequency value to set.
+     * @return the DataConnection object itself.
+     */
+    @Generated
+    DataConnection setFrequency(DataConnectionFrequency frequency) {
+        this.frequency = frequency;
+        return this;
+    }
+
+    /**
+     * Set the frequencyOffset property: The day to update the data connection on.
+     *
+     * @param frequencyOffset the frequencyOffset value to set.
+     * @return the DataConnection object itself.
+     */
+    @Generated
+    DataConnection setFrequencyOffset(Integer frequencyOffset) {
+        this.frequencyOffset = frequencyOffset;
+        return this;
+    }
+
+    /**
+     * Set the updatedDate property: The date the data connection was last updated.
+     *
+     * @param updatedDate the updatedDate value to set.
+     * @return the DataConnection object itself.
+     */
+    @Generated
+    DataConnection setUpdatedDate(OffsetDateTime updatedDate) {
+        this.updatedDate = updatedDate;
+        return this;
+    }
+
+    /**
+     * Set the userUpdatedAt property: The date the data connection was last updated by user.
+     *
+     * @param userUpdatedAt the userUpdatedAt value to set.
+     * @return the DataConnection object itself.
+     */
+    @Generated
+    DataConnection setUserUpdatedAt(OffsetDateTime userUpdatedAt) {
+        this.userUpdatedAt = userUpdatedAt;
+        return this;
+    }
+
+    /**
+     * Set the active property: An indicator of whether the data connection is active.
+     *
+     * @param active the active value to set.
+     * @return the DataConnection object itself.
+     */
+    @Generated
+    DataConnection setActive(Boolean active) {
+        this.active = active;
+        return this;
+    }
+
+    /**
+     * Set the inactiveMessage property: A message that specifies details about data connection if inactive.
+     *
+     * @param inactiveMessage the inactiveMessage value to set.
+     * @return the DataConnection object itself.
+     */
+    @Generated
+    DataConnection setInactiveMessage(String inactiveMessage) {
+        this.inactiveMessage = inactiveMessage;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", this.kind);
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("displayName", this.displayName);
+        jsonWriter.writeStringField("content", this.content == null ? null : this.content.toString());
+        jsonWriter.writeStringField("frequency", this.frequency == null ? null : this.frequency.toString());
+        jsonWriter.writeNumberField("frequencyOffset", this.frequencyOffset);
+        jsonWriter.writeBooleanField("active", this.active);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DataConnection from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DataConnection if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DataConnection.
+     */
+    @Generated
+    public static DataConnection fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("kind".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("logAnalytics".equals(discriminatorValue)) {
+                    return LogAnalyticsDataConnection.fromJson(readerToUse.reset());
+                } else if ("azureDataExplorer".equals(discriminatorValue)) {
+                    return AzureDataExplorerDataConnection.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static DataConnection fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String name = null;
+            String kind = null;
+            String id = null;
+            String displayName = null;
+            DataConnectionContent content = null;
+            OffsetDateTime createdDate = null;
+            DataConnectionFrequency frequency = null;
+            Integer frequencyOffset = null;
+            OffsetDateTime updatedDate = null;
+            OffsetDateTime userUpdatedAt = null;
+            Boolean active = null;
+            String inactiveMessage = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("content".equals(fieldName)) {
+                    content = DataConnectionContent.fromString(reader.getString());
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("frequency".equals(fieldName)) {
+                    frequency = DataConnectionFrequency.fromString(reader.getString());
+                } else if ("frequencyOffset".equals(fieldName)) {
+                    frequencyOffset = reader.getNullable(JsonReader::getInt);
+                } else if ("updatedDate".equals(fieldName)) {
+                    updatedDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("userUpdatedAt".equals(fieldName)) {
+                    userUpdatedAt
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("active".equals(fieldName)) {
+                    active = reader.getNullable(JsonReader::getBoolean);
+                } else if ("inactiveMessage".equals(fieldName)) {
+                    inactiveMessage = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DataConnection deserializedDataConnection = new DataConnection();
+            deserializedDataConnection.name = name;
+            deserializedDataConnection.kind = kind;
+            deserializedDataConnection.id = id;
+            deserializedDataConnection.displayName = displayName;
+            deserializedDataConnection.content = content;
+            deserializedDataConnection.createdDate = createdDate;
+            deserializedDataConnection.frequency = frequency;
+            deserializedDataConnection.frequencyOffset = frequencyOffset;
+            deserializedDataConnection.updatedDate = updatedDate;
+            deserializedDataConnection.userUpdatedAt = userUpdatedAt;
+            deserializedDataConnection.active = active;
+            deserializedDataConnection.inactiveMessage = inactiveMessage;
+            return deserializedDataConnection;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionContent.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionContent.java
index 4b5431505df8..59d53143773a 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionContent.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionContent.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public DataConnectionContent() {
      * @return the corresponding DataConnectionContent.
      */
     @Generated
-    @JsonCreator
     public static DataConnectionContent fromString(String name) {
         return fromString(name, DataConnectionContent.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionData.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionData.java
index 7bf9ac3f7830..11041829f994 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionData.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionData.java
@@ -5,52 +5,40 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The DataConnectionData model.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "kind",
-    defaultImpl = DataConnectionData.class)
-@JsonTypeName("DataConnectionData")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "logAnalytics", value = LogAnalyticsDataConnectionData.class),
-    @JsonSubTypes.Type(name = "azureDataExplorer", value = AzureDataExplorerDataConnectionData.class) })
 @Fluent
-public class DataConnectionData {
+public class DataConnectionData implements JsonSerializable {
 
     /*
      * The name of data connection
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The type of data the data connection will transfer.
      */
     @Generated
-    @JsonProperty(value = "content")
     private DataConnectionContent content;
 
     /*
      * The rate at which the data connection will receive updates.
      */
     @Generated
-    @JsonProperty(value = "frequency")
     private DataConnectionFrequency frequency;
 
     /*
      * The day to update the data connection on. (1-7 for weekly, 1-31 for monthly)
      */
     @Generated
-    @JsonProperty(value = "frequencyOffset")
     private Integer frequencyOffset;
 
     /**
@@ -58,6 +46,7 @@ public class DataConnectionData {
      */
     @Generated
     public DataConnectionData() {
+        this.kind = "DataConnectionData";
     }
 
     /**
@@ -147,4 +136,108 @@ public DataConnectionData setFrequencyOffset(Integer frequencyOffset) {
         this.frequencyOffset = frequencyOffset;
         return this;
     }
+
+    /*
+     * The kind of DataConnectionData
+     */
+    @Generated
+    private String kind;
+
+    /**
+     * Get the kind property: The kind of DataConnectionData.
+     *
+     * @return the kind value.
+     */
+    @Generated
+    public String getKind() {
+        return this.kind;
+    }
+
+    /**
+     * Set the kind property: The kind of DataConnectionData.
+     *
+     * @param kind the kind value to set.
+     * @return the DataConnectionData object itself.
+     */
+    @Generated
+    DataConnectionData setKind(String kind) {
+        this.kind = kind;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", this.kind);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("content", this.content == null ? null : this.content.toString());
+        jsonWriter.writeStringField("frequency", this.frequency == null ? null : this.frequency.toString());
+        jsonWriter.writeNumberField("frequencyOffset", this.frequencyOffset);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DataConnectionData from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DataConnectionData if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the DataConnectionData.
+     */
+    @Generated
+    public static DataConnectionData fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("kind".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("logAnalytics".equals(discriminatorValue)) {
+                    return LogAnalyticsDataConnectionData.fromJson(readerToUse.reset());
+                } else if ("azureDataExplorer".equals(discriminatorValue)) {
+                    return AzureDataExplorerDataConnectionData.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static DataConnectionData fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DataConnectionData deserializedDataConnectionData = new DataConnectionData();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    deserializedDataConnectionData.kind = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedDataConnectionData.name = reader.getString();
+                } else if ("content".equals(fieldName)) {
+                    deserializedDataConnectionData.content = DataConnectionContent.fromString(reader.getString());
+                } else if ("frequency".equals(fieldName)) {
+                    deserializedDataConnectionData.frequency = DataConnectionFrequency.fromString(reader.getString());
+                } else if ("frequencyOffset".equals(fieldName)) {
+                    deserializedDataConnectionData.frequencyOffset = reader.getNullable(JsonReader::getInt);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedDataConnectionData;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionFrequency.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionFrequency.java
index cb8df51cf091..15cafd760c6f 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionFrequency.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionFrequency.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -48,7 +47,6 @@ public DataConnectionFrequency() {
      * @return the corresponding DataConnectionFrequency.
      */
     @Generated
-    @JsonCreator
     public static DataConnectionFrequency fromString(String name) {
         return fromString(name, DataConnectionFrequency.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionProperties.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionProperties.java
index 465774b677ac..3333ad490312 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionProperties.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DataConnectionProperties.java
@@ -5,12 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The properties required to establish connection to a particular service.
  */
 @Immutable
-public class DataConnectionProperties {
+public class DataConnectionProperties implements JsonSerializable {
 
     /**
      * Creates an instance of DataConnectionProperties class.
@@ -18,4 +23,34 @@ public class DataConnectionProperties {
     @Generated
     public DataConnectionProperties() {
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DataConnectionProperties from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DataConnectionProperties if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the DataConnectionProperties.
+     */
+    @Generated
+    public static DataConnectionProperties fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DataConnectionProperties deserializedDataConnectionProperties = new DataConnectionProperties();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                reader.skipChildren();
+            }
+            return deserializedDataConnectionProperties;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DependentResource.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DependentResource.java
index 665b98aa4cf9..9b527be2d4ed 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DependentResource.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DependentResource.java
@@ -5,182 +5,163 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The DependentResource model.
  */
 @Immutable
-public final class DependentResource {
+public final class DependentResource implements JsonSerializable {
 
     /*
      * The md5 property.
      */
     @Generated
-    @JsonProperty(value = "md5")
     private String md5;
 
     /*
      * The responseBodySize property.
      */
     @Generated
-    @JsonProperty(value = "responseBodySize")
     private Long responseBodySize;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The firstSeenCrawlGuid property.
      */
     @Generated
-    @JsonProperty(value = "firstSeenCrawlGuid")
     private String firstSeenCrawlGuid;
 
     /*
      * The firstSeenPageGuid property.
      */
     @Generated
-    @JsonProperty(value = "firstSeenPageGuid")
     private String firstSeenPageGuid;
 
     /*
      * The firstSeenResourceGuid property.
      */
     @Generated
-    @JsonProperty(value = "firstSeenResourceGuid")
     private String firstSeenResourceGuid;
 
     /*
      * The lastSeenCrawlGuid property.
      */
     @Generated
-    @JsonProperty(value = "lastSeenCrawlGuid")
     private String lastSeenCrawlGuid;
 
     /*
      * The lastSeenPageGuid property.
      */
     @Generated
-    @JsonProperty(value = "lastSeenPageGuid")
     private String lastSeenPageGuid;
 
     /*
      * The lastSeenResourceGuid property.
      */
     @Generated
-    @JsonProperty(value = "lastSeenResourceGuid")
     private String lastSeenResourceGuid;
 
     /*
      * The responseBodyMinhash property.
      */
     @Generated
-    @JsonProperty(value = "responseBodyMinhash")
     private List responseBodyMinhash;
 
     /*
      * The contentType property.
      */
     @Generated
-    @JsonProperty(value = "contentType")
     private String contentType;
 
     /*
      * The sha256 property.
      */
     @Generated
-    @JsonProperty(value = "sha256")
     private String sha256;
 
     /*
      * The sha384 property.
      */
     @Generated
-    @JsonProperty(value = "sha384")
     private String sha384;
 
     /*
      * The sha512 property.
      */
     @Generated
-    @JsonProperty(value = "sha512")
     private String sha512;
 
     /*
      * The url property.
      */
     @Generated
-    @JsonProperty(value = "url")
     private String url;
 
     /*
      * The cached property.
      */
     @Generated
-    @JsonProperty(value = "cached")
     private Boolean cached;
 
     /*
      * The sriChecks property.
      */
     @Generated
-    @JsonProperty(value = "sriChecks")
     private List sriChecks;
 
     /*
      * The host property.
      */
     @Generated
-    @JsonProperty(value = "host")
     private String host;
 
     /*
      * The lastObservedViolation property.
      */
     @Generated
-    @JsonProperty(value = "lastObservedViolation")
     private OffsetDateTime lastObservedViolation;
 
     /*
      * The lastObservedValidation property.
      */
     @Generated
-    @JsonProperty(value = "lastObservedValidation")
     private OffsetDateTime lastObservedValidation;
 
     /*
      * The lastObservedActualSriHash property.
      */
     @Generated
-    @JsonProperty(value = "lastObservedActualSriHash")
     private String lastObservedActualSriHash;
 
     /*
      * The lastObservedExpectedSriHash property.
      */
     @Generated
-    @JsonProperty(value = "lastObservedExpectedSriHash")
     private String lastObservedExpectedSriHash;
 
     /**
@@ -429,4 +410,124 @@ public String getLastObservedActualSriHash() {
     public String getLastObservedExpectedSriHash() {
         return this.lastObservedExpectedSriHash;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("md5", this.md5);
+        jsonWriter.writeNumberField("responseBodySize", this.responseBodySize);
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeStringField("firstSeenCrawlGuid", this.firstSeenCrawlGuid);
+        jsonWriter.writeStringField("firstSeenPageGuid", this.firstSeenPageGuid);
+        jsonWriter.writeStringField("firstSeenResourceGuid", this.firstSeenResourceGuid);
+        jsonWriter.writeStringField("lastSeenCrawlGuid", this.lastSeenCrawlGuid);
+        jsonWriter.writeStringField("lastSeenPageGuid", this.lastSeenPageGuid);
+        jsonWriter.writeStringField("lastSeenResourceGuid", this.lastSeenResourceGuid);
+        jsonWriter.writeArrayField("responseBodyMinhash", this.responseBodyMinhash,
+            (writer, element) -> writer.writeInt(element));
+        jsonWriter.writeStringField("contentType", this.contentType);
+        jsonWriter.writeStringField("sha256", this.sha256);
+        jsonWriter.writeStringField("sha384", this.sha384);
+        jsonWriter.writeStringField("sha512", this.sha512);
+        jsonWriter.writeStringField("url", this.url);
+        jsonWriter.writeBooleanField("cached", this.cached);
+        jsonWriter.writeArrayField("sriChecks", this.sriChecks, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("host", this.host);
+        jsonWriter.writeStringField("lastObservedViolation",
+            this.lastObservedViolation == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastObservedViolation));
+        jsonWriter.writeStringField("lastObservedValidation",
+            this.lastObservedValidation == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastObservedValidation));
+        jsonWriter.writeStringField("lastObservedActualSriHash", this.lastObservedActualSriHash);
+        jsonWriter.writeStringField("lastObservedExpectedSriHash", this.lastObservedExpectedSriHash);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DependentResource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DependentResource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the DependentResource.
+     */
+    @Generated
+    public static DependentResource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DependentResource deserializedDependentResource = new DependentResource();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("md5".equals(fieldName)) {
+                    deserializedDependentResource.md5 = reader.getString();
+                } else if ("responseBodySize".equals(fieldName)) {
+                    deserializedDependentResource.responseBodySize = reader.getNullable(JsonReader::getLong);
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedDependentResource.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedDependentResource.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedDependentResource.count = reader.getNullable(JsonReader::getLong);
+                } else if ("firstSeenCrawlGuid".equals(fieldName)) {
+                    deserializedDependentResource.firstSeenCrawlGuid = reader.getString();
+                } else if ("firstSeenPageGuid".equals(fieldName)) {
+                    deserializedDependentResource.firstSeenPageGuid = reader.getString();
+                } else if ("firstSeenResourceGuid".equals(fieldName)) {
+                    deserializedDependentResource.firstSeenResourceGuid = reader.getString();
+                } else if ("lastSeenCrawlGuid".equals(fieldName)) {
+                    deserializedDependentResource.lastSeenCrawlGuid = reader.getString();
+                } else if ("lastSeenPageGuid".equals(fieldName)) {
+                    deserializedDependentResource.lastSeenPageGuid = reader.getString();
+                } else if ("lastSeenResourceGuid".equals(fieldName)) {
+                    deserializedDependentResource.lastSeenResourceGuid = reader.getString();
+                } else if ("responseBodyMinhash".equals(fieldName)) {
+                    List responseBodyMinhash = reader.readArray(reader1 -> reader1.getInt());
+                    deserializedDependentResource.responseBodyMinhash = responseBodyMinhash;
+                } else if ("contentType".equals(fieldName)) {
+                    deserializedDependentResource.contentType = reader.getString();
+                } else if ("sha256".equals(fieldName)) {
+                    deserializedDependentResource.sha256 = reader.getString();
+                } else if ("sha384".equals(fieldName)) {
+                    deserializedDependentResource.sha384 = reader.getString();
+                } else if ("sha512".equals(fieldName)) {
+                    deserializedDependentResource.sha512 = reader.getString();
+                } else if ("url".equals(fieldName)) {
+                    deserializedDependentResource.url = reader.getString();
+                } else if ("cached".equals(fieldName)) {
+                    deserializedDependentResource.cached = reader.getNullable(JsonReader::getBoolean);
+                } else if ("sriChecks".equals(fieldName)) {
+                    List sriChecks
+                        = reader.readArray(reader1 -> SubResourceIntegrityCheck.fromJson(reader1));
+                    deserializedDependentResource.sriChecks = sriChecks;
+                } else if ("host".equals(fieldName)) {
+                    deserializedDependentResource.host = reader.getString();
+                } else if ("lastObservedViolation".equals(fieldName)) {
+                    deserializedDependentResource.lastObservedViolation
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastObservedValidation".equals(fieldName)) {
+                    deserializedDependentResource.lastObservedValidation
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastObservedActualSriHash".equals(fieldName)) {
+                    deserializedDependentResource.lastObservedActualSriHash = reader.getString();
+                } else if ("lastObservedExpectedSriHash".equals(fieldName)) {
+                    deserializedDependentResource.lastObservedExpectedSriHash = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedDependentResource;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoGroup.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoGroup.java
index 220fb48052cb..739b0e451ddd 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoGroup.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoGroup.java
@@ -5,98 +5,91 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The DiscoGroup model.
  */
 @Immutable
-public final class DiscoGroup {
+public final class DiscoGroup implements JsonSerializable {
 
     /*
      * The system generated unique id for the resource.
      */
     @Generated
-    @JsonProperty(value = "id")
     private String id;
 
     /*
      * The caller provided unique name for the resource.
      */
     @Generated
-    @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
     private String name;
 
     /*
      * The name that can be used for display purposes.
      */
     @Generated
-    @JsonProperty(value = "displayName")
     private String displayName;
 
     /*
      * The description for a disco group.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The tier for the disco group which will affect the algorithm used for the disco runs in this group.
      */
     @Generated
-    @JsonProperty(value = "tier")
     private String tier;
 
     /*
      * The frequency at which the disco group is supposed to be rerun in milliseconds.
      */
     @Generated
-    @JsonProperty(value = "frequencyMilliseconds")
     private Long frequencyMilliseconds;
 
     /*
      * The list of seeds used for the disco group runs.
      */
     @Generated
-    @JsonProperty(value = "seeds")
     private List seeds;
 
     /*
      * The list of names used for the disco group runs.
      */
     @Generated
-    @JsonProperty(value = "names")
     private List names;
 
     /*
      * The list of excludes used for the disco group runs, aka assets to exclude from the discovery algorithm.
      */
     @Generated
-    @JsonProperty(value = "excludes")
     private List excludes;
 
     /*
      * The latest run of this disco group with some limited information, null if the group has never been run.
      */
     @Generated
-    @JsonProperty(value = "latestRun")
     private DiscoRunResult latestRun;
 
     /*
      * The date for the disco group was created.
      */
     @Generated
-    @JsonProperty(value = "createdDate")
     private OffsetDateTime createdDate;
 
     /*
      * The unique identifier for the disco template used for the disco group creation.
      */
     @Generated
-    @JsonProperty(value = "templateId")
     private String templateId;
 
     /**
@@ -147,8 +140,7 @@ public String getDescription() {
     }
 
     /**
-     * Get the tier property: The tier for the disco group which will affect the algorithm used for the disco runs in
-     * this group.
+     * Get the tier property: The tier for the disco group which will affect the algorithm used for the disco runs in this group.
      *
      * @return the tier value.
      */
@@ -158,8 +150,7 @@ public String getTier() {
     }
 
     /**
-     * Get the frequencyMilliseconds property: The frequency at which the disco group is supposed to be rerun in
-     * milliseconds.
+     * Get the frequencyMilliseconds property: The frequency at which the disco group is supposed to be rerun in milliseconds.
      *
      * @return the frequencyMilliseconds value.
      */
@@ -189,8 +180,7 @@ public List getNames() {
     }
 
     /**
-     * Get the excludes property: The list of excludes used for the disco group runs, aka assets to exclude from the
-     * discovery algorithm.
+     * Get the excludes property: The list of excludes used for the disco group runs, aka assets to exclude from the discovery algorithm.
      *
      * @return the excludes value.
      */
@@ -200,8 +190,7 @@ public List getExcludes() {
     }
 
     /**
-     * Get the latestRun property: The latest run of this disco group with some limited information, null if the group
-     * has never been run.
+     * Get the latestRun property: The latest run of this disco group with some limited information, null if the group has never been run.
      *
      * @return the latestRun value.
      */
@@ -229,4 +218,97 @@ public OffsetDateTime getCreatedDate() {
     public String getTemplateId() {
         return this.templateId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("displayName", this.displayName);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("tier", this.tier);
+        jsonWriter.writeNumberField("frequencyMilliseconds", this.frequencyMilliseconds);
+        jsonWriter.writeArrayField("seeds", this.seeds, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("names", this.names, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("excludes", this.excludes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("latestRun", this.latestRun);
+        jsonWriter.writeStringField("createdDate",
+            this.createdDate == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.createdDate));
+        jsonWriter.writeStringField("templateId", this.templateId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DiscoGroup from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DiscoGroup if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DiscoGroup.
+     */
+    @Generated
+    public static DiscoGroup fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String name = null;
+            String id = null;
+            String displayName = null;
+            String description = null;
+            String tier = null;
+            Long frequencyMilliseconds = null;
+            List seeds = null;
+            List names = null;
+            List excludes = null;
+            DiscoRunResult latestRun = null;
+            OffsetDateTime createdDate = null;
+            String templateId = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("tier".equals(fieldName)) {
+                    tier = reader.getString();
+                } else if ("frequencyMilliseconds".equals(fieldName)) {
+                    frequencyMilliseconds = reader.getNullable(JsonReader::getLong);
+                } else if ("seeds".equals(fieldName)) {
+                    seeds = reader.readArray(reader1 -> DiscoSource.fromJson(reader1));
+                } else if ("names".equals(fieldName)) {
+                    names = reader.readArray(reader1 -> reader1.getString());
+                } else if ("excludes".equals(fieldName)) {
+                    excludes = reader.readArray(reader1 -> DiscoSource.fromJson(reader1));
+                } else if ("latestRun".equals(fieldName)) {
+                    latestRun = DiscoRunResult.fromJson(reader);
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("templateId".equals(fieldName)) {
+                    templateId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DiscoGroup deserializedDiscoGroup = new DiscoGroup();
+            deserializedDiscoGroup.name = name;
+            deserializedDiscoGroup.id = id;
+            deserializedDiscoGroup.displayName = displayName;
+            deserializedDiscoGroup.description = description;
+            deserializedDiscoGroup.tier = tier;
+            deserializedDiscoGroup.frequencyMilliseconds = frequencyMilliseconds;
+            deserializedDiscoGroup.seeds = seeds;
+            deserializedDiscoGroup.names = names;
+            deserializedDiscoGroup.excludes = excludes;
+            deserializedDiscoGroup.latestRun = latestRun;
+            deserializedDiscoGroup.createdDate = createdDate;
+            deserializedDiscoGroup.templateId = templateId;
+            return deserializedDiscoGroup;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoGroupData.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoGroupData.java
index ac3ccb9cb5ad..9bff2af20fec 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoGroupData.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoGroupData.java
@@ -5,69 +5,65 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * A request body used to create a discovery group.
  */
 @Fluent
-public final class DiscoGroupData {
+public final class DiscoGroupData implements JsonSerializable {
 
     /*
      * The name for a disco group.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The description for a disco group.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The tier for the disco group which will affect the algorithm used for the disco runs in this group.
      */
     @Generated
-    @JsonProperty(value = "tier")
     private String tier;
 
     /*
      * The frequency at which the disco group is supposed to be rerun in milliseconds.
      */
     @Generated
-    @JsonProperty(value = "frequencyMilliseconds")
     private Long frequencyMilliseconds;
 
     /*
      * The list of seeds used for the disco group runs.
      */
     @Generated
-    @JsonProperty(value = "seeds")
     private List seeds;
 
     /*
      * The list of names used for the disco group runs.
      */
     @Generated
-    @JsonProperty(value = "names")
     private List names;
 
     /*
      * The list of excludes used for the disco group runs, aka assets to exclude from the discovery algorithm.
      */
     @Generated
-    @JsonProperty(value = "excludes")
     private List excludes;
 
     /*
      * The unique identifier for the disco template used for the disco group creation.
      */
     @Generated
-    @JsonProperty(value = "templateId")
     private String templateId;
 
     /**
@@ -122,8 +118,7 @@ public DiscoGroupData setDescription(String description) {
     }
 
     /**
-     * Get the tier property: The tier for the disco group which will affect the algorithm used for the disco runs in
-     * this group.
+     * Get the tier property: The tier for the disco group which will affect the algorithm used for the disco runs in this group.
      *
      * @return the tier value.
      */
@@ -133,8 +128,7 @@ public String getTier() {
     }
 
     /**
-     * Set the tier property: The tier for the disco group which will affect the algorithm used for the disco runs in
-     * this group.
+     * Set the tier property: The tier for the disco group which will affect the algorithm used for the disco runs in this group.
      *
      * @param tier the tier value to set.
      * @return the DiscoGroupData object itself.
@@ -146,8 +140,7 @@ public DiscoGroupData setTier(String tier) {
     }
 
     /**
-     * Get the frequencyMilliseconds property: The frequency at which the disco group is supposed to be rerun in
-     * milliseconds.
+     * Get the frequencyMilliseconds property: The frequency at which the disco group is supposed to be rerun in milliseconds.
      *
      * @return the frequencyMilliseconds value.
      */
@@ -157,8 +150,7 @@ public Long getFrequencyMilliseconds() {
     }
 
     /**
-     * Set the frequencyMilliseconds property: The frequency at which the disco group is supposed to be rerun in
-     * milliseconds.
+     * Set the frequencyMilliseconds property: The frequency at which the disco group is supposed to be rerun in milliseconds.
      *
      * @param frequencyMilliseconds the frequencyMilliseconds value to set.
      * @return the DiscoGroupData object itself.
@@ -214,8 +206,7 @@ public DiscoGroupData setNames(List names) {
     }
 
     /**
-     * Get the excludes property: The list of excludes used for the disco group runs, aka assets to exclude from the
-     * discovery algorithm.
+     * Get the excludes property: The list of excludes used for the disco group runs, aka assets to exclude from the discovery algorithm.
      *
      * @return the excludes value.
      */
@@ -225,8 +216,7 @@ public List getExcludes() {
     }
 
     /**
-     * Set the excludes property: The list of excludes used for the disco group runs, aka assets to exclude from the
-     * discovery algorithm.
+     * Set the excludes property: The list of excludes used for the disco group runs, aka assets to exclude from the discovery algorithm.
      *
      * @param excludes the excludes value to set.
      * @return the DiscoGroupData object itself.
@@ -258,4 +248,63 @@ public DiscoGroupData setTemplateId(String templateId) {
         this.templateId = templateId;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("tier", this.tier);
+        jsonWriter.writeNumberField("frequencyMilliseconds", this.frequencyMilliseconds);
+        jsonWriter.writeArrayField("seeds", this.seeds, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("names", this.names, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("excludes", this.excludes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("templateId", this.templateId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DiscoGroupData from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DiscoGroupData if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the DiscoGroupData.
+     */
+    @Generated
+    public static DiscoGroupData fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DiscoGroupData deserializedDiscoGroupData = new DiscoGroupData();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    deserializedDiscoGroupData.name = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    deserializedDiscoGroupData.description = reader.getString();
+                } else if ("tier".equals(fieldName)) {
+                    deserializedDiscoGroupData.tier = reader.getString();
+                } else if ("frequencyMilliseconds".equals(fieldName)) {
+                    deserializedDiscoGroupData.frequencyMilliseconds = reader.getNullable(JsonReader::getLong);
+                } else if ("seeds".equals(fieldName)) {
+                    List seeds = reader.readArray(reader1 -> DiscoSource.fromJson(reader1));
+                    deserializedDiscoGroupData.seeds = seeds;
+                } else if ("names".equals(fieldName)) {
+                    List names = reader.readArray(reader1 -> reader1.getString());
+                    deserializedDiscoGroupData.names = names;
+                } else if ("excludes".equals(fieldName)) {
+                    List excludes = reader.readArray(reader1 -> DiscoSource.fromJson(reader1));
+                    deserializedDiscoGroupData.excludes = excludes;
+                } else if ("templateId".equals(fieldName)) {
+                    deserializedDiscoGroupData.templateId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedDiscoGroupData;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoRunResult.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoRunResult.java
index f3b4bf36bdaa..e6acee696a67 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoRunResult.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoRunResult.java
@@ -5,77 +5,73 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The latest run of this disco group with some limited information, null if the group has never been run.
  */
 @Immutable
-public final class DiscoRunResult {
+public final class DiscoRunResult implements JsonSerializable {
 
     /*
      * The date for when the disco run was created in the system.
      */
     @Generated
-    @JsonProperty(value = "submittedDate")
     private OffsetDateTime submittedDate;
 
     /*
      * The date for when the disco run was actually started by the system.
      */
     @Generated
-    @JsonProperty(value = "startedDate")
     private OffsetDateTime startedDate;
 
     /*
      * The date for when the disco run was completed by the system.
      */
     @Generated
-    @JsonProperty(value = "completedDate")
     private OffsetDateTime completedDate;
 
     /*
      * The tier which will affect the algorithm used for the disco run.
      */
     @Generated
-    @JsonProperty(value = "tier")
     private String tier;
 
     /*
      * The State of the disco run.
      */
     @Generated
-    @JsonProperty(value = "state")
     private DiscoRunState state;
 
     /*
      * The total count of assets that were found this disco run.
      */
     @Generated
-    @JsonProperty(value = "totalAssetsFoundCount")
     private Long totalAssetsFoundCount;
 
     /*
      * The list of seeds used for the disco run.
      */
     @Generated
-    @JsonProperty(value = "seeds")
     private List seeds;
 
     /*
      * The list of excludes used for the disco run, aka assets to exclude from the discovery algorithm.
      */
     @Generated
-    @JsonProperty(value = "excludes")
     private List excludes;
 
     /*
      * The list of names used for the disco run.
      */
     @Generated
-    @JsonProperty(value = "names")
     private List names;
 
     /**
@@ -156,8 +152,7 @@ public List getSeeds() {
     }
 
     /**
-     * Get the excludes property: The list of excludes used for the disco run, aka assets to exclude from the discovery
-     * algorithm.
+     * Get the excludes property: The list of excludes used for the disco run, aka assets to exclude from the discovery algorithm.
      *
      * @return the excludes value.
      */
@@ -175,4 +170,72 @@ public List getExcludes() {
     public List getNames() {
         return this.names;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("submittedDate",
+            this.submittedDate == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.submittedDate));
+        jsonWriter.writeStringField("startedDate",
+            this.startedDate == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.startedDate));
+        jsonWriter.writeStringField("completedDate",
+            this.completedDate == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.completedDate));
+        jsonWriter.writeStringField("tier", this.tier);
+        jsonWriter.writeStringField("state", this.state == null ? null : this.state.toString());
+        jsonWriter.writeNumberField("totalAssetsFoundCount", this.totalAssetsFoundCount);
+        jsonWriter.writeArrayField("seeds", this.seeds, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("excludes", this.excludes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("names", this.names, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DiscoRunResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DiscoRunResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the DiscoRunResult.
+     */
+    @Generated
+    public static DiscoRunResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DiscoRunResult deserializedDiscoRunResult = new DiscoRunResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("submittedDate".equals(fieldName)) {
+                    deserializedDiscoRunResult.submittedDate
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("startedDate".equals(fieldName)) {
+                    deserializedDiscoRunResult.startedDate
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("completedDate".equals(fieldName)) {
+                    deserializedDiscoRunResult.completedDate
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("tier".equals(fieldName)) {
+                    deserializedDiscoRunResult.tier = reader.getString();
+                } else if ("state".equals(fieldName)) {
+                    deserializedDiscoRunResult.state = DiscoRunState.fromString(reader.getString());
+                } else if ("totalAssetsFoundCount".equals(fieldName)) {
+                    deserializedDiscoRunResult.totalAssetsFoundCount = reader.getNullable(JsonReader::getLong);
+                } else if ("seeds".equals(fieldName)) {
+                    List seeds = reader.readArray(reader1 -> DiscoSource.fromJson(reader1));
+                    deserializedDiscoRunResult.seeds = seeds;
+                } else if ("excludes".equals(fieldName)) {
+                    List excludes = reader.readArray(reader1 -> DiscoSource.fromJson(reader1));
+                    deserializedDiscoRunResult.excludes = excludes;
+                } else if ("names".equals(fieldName)) {
+                    List names = reader.readArray(reader1 -> reader1.getString());
+                    deserializedDiscoRunResult.names = names;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedDiscoRunResult;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoRunState.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoRunState.java
index f6890f898356..eee1c49fc0ff 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoRunState.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoRunState.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -54,7 +53,6 @@ public DiscoRunState() {
      * @return the corresponding DiscoRunState.
      */
     @Generated
-    @JsonCreator
     public static DiscoRunState fromString(String name) {
         return fromString(name, DiscoRunState.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoSource.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoSource.java
index dc7ff52a04f3..f543b267e0b9 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoSource.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoSource.java
@@ -5,26 +5,28 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Source entity used to drive discovery.
  */
 @Fluent
-public final class DiscoSource {
+public final class DiscoSource implements JsonSerializable {
 
     /*
      * The kind of disco source.
      */
     @Generated
-    @JsonProperty(value = "kind")
     private DiscoSourceKind kind;
 
     /*
      * The name for the disco source.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /**
@@ -77,4 +79,42 @@ public DiscoSource setName(String name) {
         this.name = name;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString());
+        jsonWriter.writeStringField("name", this.name);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DiscoSource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DiscoSource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the DiscoSource.
+     */
+    @Generated
+    public static DiscoSource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DiscoSource deserializedDiscoSource = new DiscoSource();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    deserializedDiscoSource.kind = DiscoSourceKind.fromString(reader.getString());
+                } else if ("name".equals(fieldName)) {
+                    deserializedDiscoSource.name = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedDiscoSource;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoSourceKind.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoSourceKind.java
index 651df3cc24c9..e616330aa236 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoSourceKind.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoSourceKind.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -66,7 +65,6 @@ public DiscoSourceKind() {
      * @return the corresponding DiscoSourceKind.
      */
     @Generated
-    @JsonCreator
     public static DiscoSourceKind fromString(String name) {
         return fromString(name, DiscoSourceKind.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoTemplate.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoTemplate.java
index cc5c9c32a19a..535e5c9047bd 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoTemplate.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DiscoTemplate.java
@@ -5,83 +5,77 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The items in the current page of results.
  */
 @Immutable
-public final class DiscoTemplate {
+public final class DiscoTemplate implements JsonSerializable {
 
     /*
      * The system generated unique id for the resource.
      */
     @Generated
-    @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY)
     private String id;
 
     /*
      * The caller provided unique name for the resource.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The name that can be used for display purposes.
      */
     @Generated
-    @JsonProperty(value = "displayName")
     private String displayName;
 
     /*
      * The name of the industry.
      */
     @Generated
-    @JsonProperty(value = "industry")
     private String industry;
 
     /*
      * The name of the region.
      */
     @Generated
-    @JsonProperty(value = "region")
     private String region;
 
     /*
      * The country code.
      */
     @Generated
-    @JsonProperty(value = "countryCode")
     private String countryCode;
 
     /*
      * The state code.
      */
     @Generated
-    @JsonProperty(value = "stateCode")
     private String stateCode;
 
     /*
      * The name of the city.
      */
     @Generated
-    @JsonProperty(value = "city")
     private String city;
 
     /*
      * The list of disco template seeds.
      */
     @Generated
-    @JsonProperty(value = "seeds")
     private List seeds;
 
     /*
      * The list of disco template names.
      */
     @Generated
-    @JsonProperty(value = "names")
     private List names;
 
     /**
@@ -190,4 +184,86 @@ public List getSeeds() {
     public List getNames() {
         return this.names;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("displayName", this.displayName);
+        jsonWriter.writeStringField("industry", this.industry);
+        jsonWriter.writeStringField("region", this.region);
+        jsonWriter.writeStringField("countryCode", this.countryCode);
+        jsonWriter.writeStringField("stateCode", this.stateCode);
+        jsonWriter.writeStringField("city", this.city);
+        jsonWriter.writeArrayField("seeds", this.seeds, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("names", this.names, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DiscoTemplate from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DiscoTemplate if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DiscoTemplate.
+     */
+    @Generated
+    public static DiscoTemplate fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String name = null;
+            String displayName = null;
+            String industry = null;
+            String region = null;
+            String countryCode = null;
+            String stateCode = null;
+            String city = null;
+            List seeds = null;
+            List names = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("industry".equals(fieldName)) {
+                    industry = reader.getString();
+                } else if ("region".equals(fieldName)) {
+                    region = reader.getString();
+                } else if ("countryCode".equals(fieldName)) {
+                    countryCode = reader.getString();
+                } else if ("stateCode".equals(fieldName)) {
+                    stateCode = reader.getString();
+                } else if ("city".equals(fieldName)) {
+                    city = reader.getString();
+                } else if ("seeds".equals(fieldName)) {
+                    seeds = reader.readArray(reader1 -> DiscoSource.fromJson(reader1));
+                } else if ("names".equals(fieldName)) {
+                    names = reader.readArray(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DiscoTemplate deserializedDiscoTemplate = new DiscoTemplate();
+            deserializedDiscoTemplate.id = id;
+            deserializedDiscoTemplate.name = name;
+            deserializedDiscoTemplate.displayName = displayName;
+            deserializedDiscoTemplate.industry = industry;
+            deserializedDiscoTemplate.region = region;
+            deserializedDiscoTemplate.countryCode = countryCode;
+            deserializedDiscoTemplate.stateCode = stateCode;
+            deserializedDiscoTemplate.city = city;
+            deserializedDiscoTemplate.seeds = seeds;
+            deserializedDiscoTemplate.names = names;
+            return deserializedDiscoTemplate;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DomainAsset.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DomainAsset.java
index fb7e7a6b0301..57058af06edb 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DomainAsset.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DomainAsset.java
@@ -5,8 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -19,217 +23,186 @@ public final class DomainAsset extends InventoryAsset {
      * The domain property.
      */
     @Generated
-    @JsonProperty(value = "domain")
     private String domain;
 
     /*
      * The whoisId property.
      */
     @Generated
-    @JsonProperty(value = "whoisId")
     private Long whoisId;
 
     /*
      * The registrarIanaIds property.
      */
     @Generated
-    @JsonProperty(value = "registrarIanaIds")
     private List registrarIanaIds;
 
     /*
      * The registrantContacts property.
      */
     @Generated
-    @JsonProperty(value = "registrantContacts")
     private List registrantContacts;
 
     /*
      * The registrantOrgs property.
      */
     @Generated
-    @JsonProperty(value = "registrantOrgs")
     private List registrantOrgs;
 
     /*
      * The adminContacts property.
      */
     @Generated
-    @JsonProperty(value = "adminContacts")
     private List adminContacts;
 
     /*
      * The technicalContacts property.
      */
     @Generated
-    @JsonProperty(value = "technicalContacts")
     private List technicalContacts;
 
     /*
      * The alexaInfos property.
      */
     @Generated
-    @JsonProperty(value = "alexaInfos")
     private List alexaInfos;
 
     /*
      * The nameServers property.
      */
     @Generated
-    @JsonProperty(value = "nameServers")
     private List nameServers;
 
     /*
      * The mailServers property.
      */
     @Generated
-    @JsonProperty(value = "mailServers")
     private List mailServers;
 
     /*
      * The whoisServers property.
      */
     @Generated
-    @JsonProperty(value = "whoisServers")
     private List whoisServers;
 
     /*
      * The domainStatuses property.
      */
     @Generated
-    @JsonProperty(value = "domainStatuses")
     private List domainStatuses;
 
     /*
      * The registrarCreatedAt property.
      */
     @Generated
-    @JsonProperty(value = "registrarCreatedAt")
     private List registrarCreatedAt;
 
     /*
      * The registrarUpdatedAt property.
      */
     @Generated
-    @JsonProperty(value = "registrarUpdatedAt")
     private List registrarUpdatedAt;
 
     /*
      * The registrarExpiresAt property.
      */
     @Generated
-    @JsonProperty(value = "registrarExpiresAt")
     private List registrarExpiresAt;
 
     /*
      * The soaRecords property.
      */
     @Generated
-    @JsonProperty(value = "soaRecords")
     private List soaRecords;
 
     /*
      * The detailedFromWhoisAt property.
      */
     @Generated
-    @JsonProperty(value = "detailedFromWhoisAt")
     private OffsetDateTime detailedFromWhoisAt;
 
     /*
      * The registrarNames property.
      */
     @Generated
-    @JsonProperty(value = "registrarNames")
     private List registrarNames;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The parkedDomain property.
      */
     @Generated
-    @JsonProperty(value = "parkedDomain")
     private List parkedDomain;
 
     /*
      * The registrantNames property.
      */
     @Generated
-    @JsonProperty(value = "registrantNames")
     private List registrantNames;
 
     /*
      * The adminNames property.
      */
     @Generated
-    @JsonProperty(value = "adminNames")
     private List adminNames;
 
     /*
      * The technicalNames property.
      */
     @Generated
-    @JsonProperty(value = "technicalNames")
     private List technicalNames;
 
     /*
      * The adminOrgs property.
      */
     @Generated
-    @JsonProperty(value = "adminOrgs")
     private List adminOrgs;
 
     /*
      * The technicalOrgs property.
      */
     @Generated
-    @JsonProperty(value = "technicalOrgs")
     private List technicalOrgs;
 
     /*
      * The registrantPhones property.
      */
     @Generated
-    @JsonProperty(value = "registrantPhones")
     private List registrantPhones;
 
     /*
      * The adminPhones property.
      */
     @Generated
-    @JsonProperty(value = "adminPhones")
     private List adminPhones;
 
     /*
      * The technicalPhones property.
      */
     @Generated
-    @JsonProperty(value = "technicalPhones")
     private List technicalPhones;
 
     /**
@@ -548,4 +521,181 @@ public List getAdminPhones() {
     public List getTechnicalPhones() {
         return this.technicalPhones;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("domain", this.domain);
+        jsonWriter.writeNumberField("whoisId", this.whoisId);
+        jsonWriter.writeArrayField("registrarIanaIds", this.registrarIanaIds,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrantContacts", this.registrantContacts,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrantOrgs", this.registrantOrgs,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("adminContacts", this.adminContacts, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("technicalContacts", this.technicalContacts,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("alexaInfos", this.alexaInfos, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("nameServers", this.nameServers, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("mailServers", this.mailServers, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("whoisServers", this.whoisServers, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("domainStatuses", this.domainStatuses,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrarCreatedAt", this.registrarCreatedAt,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrarUpdatedAt", this.registrarUpdatedAt,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrarExpiresAt", this.registrarExpiresAt,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("soaRecords", this.soaRecords, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("detailedFromWhoisAt",
+            this.detailedFromWhoisAt == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.detailedFromWhoisAt));
+        jsonWriter.writeArrayField("registrarNames", this.registrarNames,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeArrayField("parkedDomain", this.parkedDomain, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrantNames", this.registrantNames,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("adminNames", this.adminNames, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("technicalNames", this.technicalNames,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("adminOrgs", this.adminOrgs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("technicalOrgs", this.technicalOrgs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrantPhones", this.registrantPhones,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("adminPhones", this.adminPhones, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("technicalPhones", this.technicalPhones,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DomainAsset from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DomainAsset if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the DomainAsset.
+     */
+    @Generated
+    public static DomainAsset fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DomainAsset deserializedDomainAsset = new DomainAsset();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("domain".equals(fieldName)) {
+                    deserializedDomainAsset.domain = reader.getString();
+                } else if ("whoisId".equals(fieldName)) {
+                    deserializedDomainAsset.whoisId = reader.getNullable(JsonReader::getLong);
+                } else if ("registrarIanaIds".equals(fieldName)) {
+                    List registrarIanaIds
+                        = reader.readArray(reader1 -> ObservedInteger.fromJson(reader1));
+                    deserializedDomainAsset.registrarIanaIds = registrarIanaIds;
+                } else if ("registrantContacts".equals(fieldName)) {
+                    List registrantContacts
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.registrantContacts = registrantContacts;
+                } else if ("registrantOrgs".equals(fieldName)) {
+                    List registrantOrgs = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.registrantOrgs = registrantOrgs;
+                } else if ("adminContacts".equals(fieldName)) {
+                    List adminContacts = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.adminContacts = adminContacts;
+                } else if ("technicalContacts".equals(fieldName)) {
+                    List technicalContacts
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.technicalContacts = technicalContacts;
+                } else if ("alexaInfos".equals(fieldName)) {
+                    List alexaInfos = reader.readArray(reader1 -> AlexaDetails.fromJson(reader1));
+                    deserializedDomainAsset.alexaInfos = alexaInfos;
+                } else if ("nameServers".equals(fieldName)) {
+                    List nameServers = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.nameServers = nameServers;
+                } else if ("mailServers".equals(fieldName)) {
+                    List mailServers = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.mailServers = mailServers;
+                } else if ("whoisServers".equals(fieldName)) {
+                    List whoisServers = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.whoisServers = whoisServers;
+                } else if ("domainStatuses".equals(fieldName)) {
+                    List domainStatuses = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.domainStatuses = domainStatuses;
+                } else if ("registrarCreatedAt".equals(fieldName)) {
+                    List registrarCreatedAt = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedDomainAsset.registrarCreatedAt = registrarCreatedAt;
+                } else if ("registrarUpdatedAt".equals(fieldName)) {
+                    List registrarUpdatedAt = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedDomainAsset.registrarUpdatedAt = registrarUpdatedAt;
+                } else if ("registrarExpiresAt".equals(fieldName)) {
+                    List registrarExpiresAt = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedDomainAsset.registrarExpiresAt = registrarExpiresAt;
+                } else if ("soaRecords".equals(fieldName)) {
+                    List soaRecords = reader.readArray(reader1 -> SoaRecord.fromJson(reader1));
+                    deserializedDomainAsset.soaRecords = soaRecords;
+                } else if ("detailedFromWhoisAt".equals(fieldName)) {
+                    deserializedDomainAsset.detailedFromWhoisAt
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("registrarNames".equals(fieldName)) {
+                    List registrarNames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.registrarNames = registrarNames;
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedDomainAsset.sources = sources;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedDomainAsset.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedDomainAsset.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedDomainAsset.count = reader.getNullable(JsonReader::getLong);
+                } else if ("parkedDomain".equals(fieldName)) {
+                    List parkedDomain = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedDomainAsset.parkedDomain = parkedDomain;
+                } else if ("registrantNames".equals(fieldName)) {
+                    List registrantNames
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.registrantNames = registrantNames;
+                } else if ("adminNames".equals(fieldName)) {
+                    List adminNames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.adminNames = adminNames;
+                } else if ("technicalNames".equals(fieldName)) {
+                    List technicalNames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.technicalNames = technicalNames;
+                } else if ("adminOrgs".equals(fieldName)) {
+                    List adminOrgs = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.adminOrgs = adminOrgs;
+                } else if ("technicalOrgs".equals(fieldName)) {
+                    List technicalOrgs = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.technicalOrgs = technicalOrgs;
+                } else if ("registrantPhones".equals(fieldName)) {
+                    List registrantPhones
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.registrantPhones = registrantPhones;
+                } else if ("adminPhones".equals(fieldName)) {
+                    List adminPhones = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.adminPhones = adminPhones;
+                } else if ("technicalPhones".equals(fieldName)) {
+                    List technicalPhones
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedDomainAsset.technicalPhones = technicalPhones;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedDomainAsset;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DomainAssetResource.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DomainAssetResource.java
index 5b980461361a..3aea7fd95d56 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DomainAssetResource.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/DomainAssetResource.java
@@ -5,16 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 /**
  * The DomainAssetResource model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("domain")
 @Immutable
 public final class DomainAssetResource extends AssetResource {
 
@@ -22,8 +23,7 @@ public final class DomainAssetResource extends AssetResource {
      * asset
      */
     @Generated
-    @JsonProperty(value = "asset")
-    private DomainAsset asset;
+    private final DomainAsset asset;
 
     /**
      * Creates an instance of DomainAssetResource class.
@@ -31,8 +31,8 @@ public final class DomainAssetResource extends AssetResource {
      * @param asset the asset value to set.
      */
     @Generated
-    @JsonCreator
-    private DomainAssetResource(@JsonProperty(value = "asset") DomainAsset asset) {
+    private DomainAssetResource(DomainAsset asset) {
+        setKind("domain");
         this.asset = asset;
     }
 
@@ -45,4 +45,112 @@ private DomainAssetResource(@JsonProperty(value = "asset") DomainAsset asset) {
     public DomainAsset getAsset() {
         return this.asset;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeStringField("name", getName());
+        jsonWriter.writeStringField("displayName", getDisplayName());
+        jsonWriter.writeStringField("uuid", getUuid());
+        jsonWriter.writeStringField("createdDate",
+            getCreatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getCreatedDate()));
+        jsonWriter.writeStringField("updatedDate",
+            getUpdatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getUpdatedDate()));
+        jsonWriter.writeStringField("state", getState() == null ? null : getState().toString());
+        jsonWriter.writeStringField("externalId", getExternalId());
+        jsonWriter.writeArrayField("labels", getLabels(), (writer, element) -> writer.writeString(element));
+        jsonWriter.writeBooleanField("wildcard", isWildcard());
+        jsonWriter.writeStringField("discoGroupName", getDiscoGroupName());
+        jsonWriter.writeArrayField("auditTrail", getAuditTrail(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("reason", getReason());
+        jsonWriter.writeJsonField("asset", this.asset);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DomainAssetResource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DomainAssetResource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DomainAssetResource.
+     */
+    @Generated
+    public static DomainAssetResource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String kind = "domain";
+            String name = null;
+            String displayName = null;
+            String uuid = null;
+            OffsetDateTime createdDate = null;
+            OffsetDateTime updatedDate = null;
+            AssetState state = null;
+            String externalId = null;
+            List labels = null;
+            Boolean wildcard = null;
+            String discoGroupName = null;
+            List auditTrail = null;
+            String reason = null;
+            DomainAsset asset = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("uuid".equals(fieldName)) {
+                    uuid = reader.getString();
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("updatedDate".equals(fieldName)) {
+                    updatedDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("state".equals(fieldName)) {
+                    state = AssetState.fromString(reader.getString());
+                } else if ("externalId".equals(fieldName)) {
+                    externalId = reader.getString();
+                } else if ("labels".equals(fieldName)) {
+                    labels = reader.readArray(reader1 -> reader1.getString());
+                } else if ("wildcard".equals(fieldName)) {
+                    wildcard = reader.getNullable(JsonReader::getBoolean);
+                } else if ("discoGroupName".equals(fieldName)) {
+                    discoGroupName = reader.getString();
+                } else if ("auditTrail".equals(fieldName)) {
+                    auditTrail = reader.readArray(reader1 -> AuditTrailItem.fromJson(reader1));
+                } else if ("reason".equals(fieldName)) {
+                    reason = reader.getString();
+                } else if ("asset".equals(fieldName)) {
+                    asset = DomainAsset.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            DomainAssetResource deserializedDomainAssetResource = new DomainAssetResource(asset);
+            deserializedDomainAssetResource.setId(id);
+            deserializedDomainAssetResource.setKind(kind);
+            deserializedDomainAssetResource.setName(name);
+            deserializedDomainAssetResource.setDisplayName(displayName);
+            deserializedDomainAssetResource.setUuid(uuid);
+            deserializedDomainAssetResource.setCreatedDate(createdDate);
+            deserializedDomainAssetResource.setUpdatedDate(updatedDate);
+            deserializedDomainAssetResource.setState(state);
+            deserializedDomainAssetResource.setExternalId(externalId);
+            deserializedDomainAssetResource.setLabels(labels);
+            deserializedDomainAssetResource.setWildcard(wildcard);
+            deserializedDomainAssetResource.setDiscoGroupName(discoGroupName);
+            deserializedDomainAssetResource.setAuditTrail(auditTrail);
+            deserializedDomainAssetResource.setReason(reason);
+            return deserializedDomainAssetResource;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ErrorDetail.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ErrorDetail.java
index 558e1c5edbf0..89102dc754f2 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ErrorDetail.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ErrorDetail.java
@@ -5,49 +5,47 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * This is the top-level error object whose code matches the x-ms-error-code response header.
  */
 @Immutable
-public final class ErrorDetail {
+public final class ErrorDetail implements JsonSerializable {
 
     /*
      * This is one of a server-defined set of error codes.
      */
     @Generated
-    @JsonProperty(value = "code")
-    private String code;
+    private final String code;
 
     /*
      * This is a human-readable representation of the error.
      */
     @Generated
-    @JsonProperty(value = "message")
-    private String message;
+    private final String message;
 
     /*
      * This is the error target.
      */
     @Generated
-    @JsonProperty(value = "target")
     private String target;
 
     /*
      * This is an array of details about specific errors that led to this reported error.
      */
     @Generated
-    @JsonProperty(value = "details")
     private List details;
 
     /*
      * This is an object containing more specific information than the current object about the error.
      */
     @Generated
-    @JsonProperty(value = "innererror")
     private InnerError innererror;
 
     /**
@@ -57,8 +55,7 @@ public final class ErrorDetail {
      * @param message the message value to set.
      */
     @Generated
-    @JsonCreator
-    private ErrorDetail(@JsonProperty(value = "code") String code, @JsonProperty(value = "message") String message) {
+    private ErrorDetail(String code, String message) {
         this.code = code;
         this.message = message;
     }
@@ -104,8 +101,7 @@ public List getDetails() {
     }
 
     /**
-     * Get the innererror property: This is an object containing more specific information than the current object
-     * about the error.
+     * Get the innererror property: This is an object containing more specific information than the current object about the error.
      *
      * @return the innererror value.
      */
@@ -113,4 +109,60 @@ public List getDetails() {
     public InnerError getInnererror() {
         return this.innererror;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("code", this.code);
+        jsonWriter.writeStringField("message", this.message);
+        jsonWriter.writeStringField("target", this.target);
+        jsonWriter.writeArrayField("details", this.details, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("innererror", this.innererror);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ErrorDetail from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ErrorDetail if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ErrorDetail.
+     */
+    @Generated
+    public static ErrorDetail fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String code = null;
+            String message = null;
+            String target = null;
+            List details = null;
+            InnerError innererror = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("code".equals(fieldName)) {
+                    code = reader.getString();
+                } else if ("message".equals(fieldName)) {
+                    message = reader.getString();
+                } else if ("target".equals(fieldName)) {
+                    target = reader.getString();
+                } else if ("details".equals(fieldName)) {
+                    details = reader.readArray(reader1 -> ErrorDetail.fromJson(reader1));
+                } else if ("innererror".equals(fieldName)) {
+                    innererror = InnerError.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            ErrorDetail deserializedErrorDetail = new ErrorDetail(code, message);
+            deserializedErrorDetail.target = target;
+            deserializedErrorDetail.details = details;
+            deserializedErrorDetail.innererror = innererror;
+            return deserializedErrorDetail;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/GuidPair.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/GuidPair.java
index 92d80118e0f5..79dee5611e4c 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/GuidPair.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/GuidPair.java
@@ -5,41 +5,42 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * The GuidPair model.
  */
 @Immutable
-public final class GuidPair {
+public final class GuidPair implements JsonSerializable {
 
     /*
      * The pageGuid property.
      */
     @Generated
-    @JsonProperty(value = "pageGuid")
     private String pageGuid;
 
     /*
      * The crawlStateGuid property.
      */
     @Generated
-    @JsonProperty(value = "crawlStateGuid")
     private String crawlStateGuid;
 
     /*
      * The loadDate property.
      */
     @Generated
-    @JsonProperty(value = "loadDate")
     private OffsetDateTime loadDate;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /**
@@ -88,4 +89,50 @@ public OffsetDateTime getLoadDate() {
     public Boolean isRecent() {
         return this.recent;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("pageGuid", this.pageGuid);
+        jsonWriter.writeStringField("crawlStateGuid", this.crawlStateGuid);
+        jsonWriter.writeStringField("loadDate",
+            this.loadDate == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.loadDate));
+        jsonWriter.writeBooleanField("recent", this.recent);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of GuidPair from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of GuidPair if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the GuidPair.
+     */
+    @Generated
+    public static GuidPair fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            GuidPair deserializedGuidPair = new GuidPair();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("pageGuid".equals(fieldName)) {
+                    deserializedGuidPair.pageGuid = reader.getString();
+                } else if ("crawlStateGuid".equals(fieldName)) {
+                    deserializedGuidPair.crawlStateGuid = reader.getString();
+                } else if ("loadDate".equals(fieldName)) {
+                    deserializedGuidPair.loadDate
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("recent".equals(fieldName)) {
+                    deserializedGuidPair.recent = reader.getNullable(JsonReader::getBoolean);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedGuidPair;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/HostAsset.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/HostAsset.java
index 5b97ccfac964..381f3e3e0e85 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/HostAsset.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/HostAsset.java
@@ -5,8 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -19,231 +23,198 @@ public final class HostAsset extends InventoryAsset {
      * The host property.
      */
     @Generated
-    @JsonProperty(value = "host")
     private String host;
 
     /*
      * The domain property.
      */
     @Generated
-    @JsonProperty(value = "domain")
     private String domain;
 
     /*
      * The ipAddresses property.
      */
     @Generated
-    @JsonProperty(value = "ipAddresses")
     private List ipAddresses;
 
     /*
      * The webComponents property.
      */
     @Generated
-    @JsonProperty(value = "webComponents")
     private List webComponents;
 
     /*
      * The headers property.
      */
     @Generated
-    @JsonProperty(value = "headers")
     private List headers;
 
     /*
      * The attributes property.
      */
     @Generated
-    @JsonProperty(value = "attributes")
     private List attributes;
 
     /*
      * The cookies property.
      */
     @Generated
-    @JsonProperty(value = "cookies")
     private List cookies;
 
     /*
      * The sslCerts property.
      */
     @Generated
-    @JsonProperty(value = "sslCerts")
     private List sslCerts;
 
     /*
      * The parentHosts property.
      */
     @Generated
-    @JsonProperty(value = "parentHosts")
     private List parentHosts;
 
     /*
      * The childHosts property.
      */
     @Generated
-    @JsonProperty(value = "childHosts")
     private List childHosts;
 
     /*
      * The hostCore property.
      */
     @Generated
-    @JsonProperty(value = "hostCore")
     private HostCore hostCore;
 
     /*
      * The services property.
      */
     @Generated
-    @JsonProperty(value = "services")
     private List services;
 
     /*
      * The cnames property.
      */
     @Generated
-    @JsonProperty(value = "cnames")
     private List cnames;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The resourceUrls property.
      */
     @Generated
-    @JsonProperty(value = "resourceUrls")
     private List resourceUrls;
 
     /*
      * The scanMetadata property.
      */
     @Generated
-    @JsonProperty(value = "scanMetadata")
     private List scanMetadata;
 
     /*
      * The asns property.
      */
     @Generated
-    @JsonProperty(value = "asns")
     private List asns;
 
     /*
      * The ipBlocks property.
      */
     @Generated
-    @JsonProperty(value = "ipBlocks")
     private List ipBlocks;
 
     /*
      * The responseBodies property.
      */
     @Generated
-    @JsonProperty(value = "responseBodies")
     private List responseBodies;
 
     /*
      * The domainAsset property.
      */
     @Generated
-    @JsonProperty(value = "domainAsset")
     private DomainAsset domainAsset;
 
     /*
      * The nsRecord property.
      */
     @Generated
-    @JsonProperty(value = "nsRecord")
     private List nsRecord;
 
     /*
      * The mxRecord property.
      */
     @Generated
-    @JsonProperty(value = "mxRecord")
     private List mxRecord;
 
     /*
      * The webserver property.
      */
     @Generated
-    @JsonProperty(value = "webserver")
     private List webserver;
 
     /*
      * The location property.
      */
     @Generated
-    @JsonProperty(value = "location")
     private List location;
 
     /*
      * The nxdomain property.
      */
     @Generated
-    @JsonProperty(value = "nxdomain")
     private List nxdomain;
 
     /*
      * The sslServerConfig property.
      */
     @Generated
-    @JsonProperty(value = "sslServerConfig")
     private List sslServerConfig;
 
     /*
      * The isWildcard property.
      */
     @Generated
-    @JsonProperty(value = "isWildcard")
     private List isWildcard;
 
     /*
      * The banners property.
      */
     @Generated
-    @JsonProperty(value = "banners")
     private List banners;
 
     /*
      * The ipv4 property.
      */
     @Generated
-    @JsonProperty(value = "ipv4")
     private List ipv4;
 
     /*
      * The ipv6 property.
      */
     @Generated
-    @JsonProperty(value = "ipv6")
     private List ipv6;
 
     /**
@@ -582,4 +553,168 @@ public List getIpv4() {
     public List getIpv6() {
         return this.ipv6;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("host", this.host);
+        jsonWriter.writeStringField("domain", this.domain);
+        jsonWriter.writeArrayField("ipAddresses", this.ipAddresses, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("webComponents", this.webComponents, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("headers", this.headers, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("attributes", this.attributes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("cookies", this.cookies, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sslCerts", this.sslCerts, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("parentHosts", this.parentHosts, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("childHosts", this.childHosts, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("hostCore", this.hostCore);
+        jsonWriter.writeArrayField("services", this.services, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("cnames", this.cnames, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeArrayField("resourceUrls", this.resourceUrls, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("scanMetadata", this.scanMetadata, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("asns", this.asns, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("ipBlocks", this.ipBlocks, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("responseBodies", this.responseBodies,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("domainAsset", this.domainAsset);
+        jsonWriter.writeArrayField("nsRecord", this.nsRecord, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("mxRecord", this.mxRecord, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("webserver", this.webserver, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("location", this.location, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("nxdomain", this.nxdomain, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sslServerConfig", this.sslServerConfig,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("isWildcard", this.isWildcard, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("banners", this.banners, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("ipv4", this.ipv4, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("ipv6", this.ipv6, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of HostAsset from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of HostAsset if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the HostAsset.
+     */
+    @Generated
+    public static HostAsset fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            HostAsset deserializedHostAsset = new HostAsset();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("host".equals(fieldName)) {
+                    deserializedHostAsset.host = reader.getString();
+                } else if ("domain".equals(fieldName)) {
+                    deserializedHostAsset.domain = reader.getString();
+                } else if ("ipAddresses".equals(fieldName)) {
+                    List ipAddresses = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedHostAsset.ipAddresses = ipAddresses;
+                } else if ("webComponents".equals(fieldName)) {
+                    List webComponents = reader.readArray(reader1 -> WebComponent.fromJson(reader1));
+                    deserializedHostAsset.webComponents = webComponents;
+                } else if ("headers".equals(fieldName)) {
+                    List headers = reader.readArray(reader1 -> ObservedHeader.fromJson(reader1));
+                    deserializedHostAsset.headers = headers;
+                } else if ("attributes".equals(fieldName)) {
+                    List attributes = reader.readArray(reader1 -> Attribute.fromJson(reader1));
+                    deserializedHostAsset.attributes = attributes;
+                } else if ("cookies".equals(fieldName)) {
+                    List cookies = reader.readArray(reader1 -> Cookie.fromJson(reader1));
+                    deserializedHostAsset.cookies = cookies;
+                } else if ("sslCerts".equals(fieldName)) {
+                    List sslCerts = reader.readArray(reader1 -> SslCertAsset.fromJson(reader1));
+                    deserializedHostAsset.sslCerts = sslCerts;
+                } else if ("parentHosts".equals(fieldName)) {
+                    List parentHosts = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedHostAsset.parentHosts = parentHosts;
+                } else if ("childHosts".equals(fieldName)) {
+                    List childHosts = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedHostAsset.childHosts = childHosts;
+                } else if ("hostCore".equals(fieldName)) {
+                    deserializedHostAsset.hostCore = HostCore.fromJson(reader);
+                } else if ("services".equals(fieldName)) {
+                    List services = reader.readArray(reader1 -> Service.fromJson(reader1));
+                    deserializedHostAsset.services = services;
+                } else if ("cnames".equals(fieldName)) {
+                    List cnames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedHostAsset.cnames = cnames;
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedHostAsset.sources = sources;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedHostAsset.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedHostAsset.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedHostAsset.count = reader.getNullable(JsonReader::getLong);
+                } else if ("resourceUrls".equals(fieldName)) {
+                    List resourceUrls = reader.readArray(reader1 -> ResourceUrl.fromJson(reader1));
+                    deserializedHostAsset.resourceUrls = resourceUrls;
+                } else if ("scanMetadata".equals(fieldName)) {
+                    List scanMetadata = reader.readArray(reader1 -> ScanMetadata.fromJson(reader1));
+                    deserializedHostAsset.scanMetadata = scanMetadata;
+                } else if ("asns".equals(fieldName)) {
+                    List asns = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedHostAsset.asns = asns;
+                } else if ("ipBlocks".equals(fieldName)) {
+                    List ipBlocks = reader.readArray(reader1 -> IpBlock.fromJson(reader1));
+                    deserializedHostAsset.ipBlocks = ipBlocks;
+                } else if ("responseBodies".equals(fieldName)) {
+                    List responseBodies = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedHostAsset.responseBodies = responseBodies;
+                } else if ("domainAsset".equals(fieldName)) {
+                    deserializedHostAsset.domainAsset = DomainAsset.fromJson(reader);
+                } else if ("nsRecord".equals(fieldName)) {
+                    List nsRecord = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedHostAsset.nsRecord = nsRecord;
+                } else if ("mxRecord".equals(fieldName)) {
+                    List mxRecord = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedHostAsset.mxRecord = mxRecord;
+                } else if ("webserver".equals(fieldName)) {
+                    List webserver = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedHostAsset.webserver = webserver;
+                } else if ("location".equals(fieldName)) {
+                    List location = reader.readArray(reader1 -> ObservedLocation.fromJson(reader1));
+                    deserializedHostAsset.location = location;
+                } else if ("nxdomain".equals(fieldName)) {
+                    List nxdomain = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedHostAsset.nxdomain = nxdomain;
+                } else if ("sslServerConfig".equals(fieldName)) {
+                    List sslServerConfig
+                        = reader.readArray(reader1 -> SslServerConfig.fromJson(reader1));
+                    deserializedHostAsset.sslServerConfig = sslServerConfig;
+                } else if ("isWildcard".equals(fieldName)) {
+                    List isWildcard = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedHostAsset.isWildcard = isWildcard;
+                } else if ("banners".equals(fieldName)) {
+                    List banners = reader.readArray(reader1 -> Banner.fromJson(reader1));
+                    deserializedHostAsset.banners = banners;
+                } else if ("ipv4".equals(fieldName)) {
+                    List ipv4 = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedHostAsset.ipv4 = ipv4;
+                } else if ("ipv6".equals(fieldName)) {
+                    List ipv6 = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedHostAsset.ipv6 = ipv6;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedHostAsset;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/HostAssetResource.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/HostAssetResource.java
index f04bf6093763..5f90863f674a 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/HostAssetResource.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/HostAssetResource.java
@@ -5,16 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 /**
  * The HostAssetResource model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("host")
 @Immutable
 public final class HostAssetResource extends AssetResource {
 
@@ -22,8 +23,7 @@ public final class HostAssetResource extends AssetResource {
      * asset
      */
     @Generated
-    @JsonProperty(value = "asset")
-    private HostAsset asset;
+    private final HostAsset asset;
 
     /**
      * Creates an instance of HostAssetResource class.
@@ -31,8 +31,8 @@ public final class HostAssetResource extends AssetResource {
      * @param asset the asset value to set.
      */
     @Generated
-    @JsonCreator
-    private HostAssetResource(@JsonProperty(value = "asset") HostAsset asset) {
+    private HostAssetResource(HostAsset asset) {
+        setKind("host");
         this.asset = asset;
     }
 
@@ -45,4 +45,112 @@ private HostAssetResource(@JsonProperty(value = "asset") HostAsset asset) {
     public HostAsset getAsset() {
         return this.asset;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeStringField("name", getName());
+        jsonWriter.writeStringField("displayName", getDisplayName());
+        jsonWriter.writeStringField("uuid", getUuid());
+        jsonWriter.writeStringField("createdDate",
+            getCreatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getCreatedDate()));
+        jsonWriter.writeStringField("updatedDate",
+            getUpdatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getUpdatedDate()));
+        jsonWriter.writeStringField("state", getState() == null ? null : getState().toString());
+        jsonWriter.writeStringField("externalId", getExternalId());
+        jsonWriter.writeArrayField("labels", getLabels(), (writer, element) -> writer.writeString(element));
+        jsonWriter.writeBooleanField("wildcard", isWildcard());
+        jsonWriter.writeStringField("discoGroupName", getDiscoGroupName());
+        jsonWriter.writeArrayField("auditTrail", getAuditTrail(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("reason", getReason());
+        jsonWriter.writeJsonField("asset", this.asset);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of HostAssetResource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of HostAssetResource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the HostAssetResource.
+     */
+    @Generated
+    public static HostAssetResource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String kind = "host";
+            String name = null;
+            String displayName = null;
+            String uuid = null;
+            OffsetDateTime createdDate = null;
+            OffsetDateTime updatedDate = null;
+            AssetState state = null;
+            String externalId = null;
+            List labels = null;
+            Boolean wildcard = null;
+            String discoGroupName = null;
+            List auditTrail = null;
+            String reason = null;
+            HostAsset asset = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("uuid".equals(fieldName)) {
+                    uuid = reader.getString();
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("updatedDate".equals(fieldName)) {
+                    updatedDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("state".equals(fieldName)) {
+                    state = AssetState.fromString(reader.getString());
+                } else if ("externalId".equals(fieldName)) {
+                    externalId = reader.getString();
+                } else if ("labels".equals(fieldName)) {
+                    labels = reader.readArray(reader1 -> reader1.getString());
+                } else if ("wildcard".equals(fieldName)) {
+                    wildcard = reader.getNullable(JsonReader::getBoolean);
+                } else if ("discoGroupName".equals(fieldName)) {
+                    discoGroupName = reader.getString();
+                } else if ("auditTrail".equals(fieldName)) {
+                    auditTrail = reader.readArray(reader1 -> AuditTrailItem.fromJson(reader1));
+                } else if ("reason".equals(fieldName)) {
+                    reason = reader.getString();
+                } else if ("asset".equals(fieldName)) {
+                    asset = HostAsset.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            HostAssetResource deserializedHostAssetResource = new HostAssetResource(asset);
+            deserializedHostAssetResource.setId(id);
+            deserializedHostAssetResource.setKind(kind);
+            deserializedHostAssetResource.setName(name);
+            deserializedHostAssetResource.setDisplayName(displayName);
+            deserializedHostAssetResource.setUuid(uuid);
+            deserializedHostAssetResource.setCreatedDate(createdDate);
+            deserializedHostAssetResource.setUpdatedDate(updatedDate);
+            deserializedHostAssetResource.setState(state);
+            deserializedHostAssetResource.setExternalId(externalId);
+            deserializedHostAssetResource.setLabels(labels);
+            deserializedHostAssetResource.setWildcard(wildcard);
+            deserializedHostAssetResource.setDiscoGroupName(discoGroupName);
+            deserializedHostAssetResource.setAuditTrail(auditTrail);
+            deserializedHostAssetResource.setReason(reason);
+            return deserializedHostAssetResource;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/HostCore.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/HostCore.java
index b6a3d7c48bea..30963926c128 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/HostCore.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/HostCore.java
@@ -5,279 +5,246 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * The HostCore model.
  */
 @Immutable
-public final class HostCore {
+public final class HostCore implements JsonSerializable {
 
     /*
      * The host property.
      */
     @Generated
-    @JsonProperty(value = "host")
     private String host;
 
     /*
      * The domain property.
      */
     @Generated
-    @JsonProperty(value = "domain")
     private String domain;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The blacklistCauseFirstSeen property.
      */
     @Generated
-    @JsonProperty(value = "blacklistCauseFirstSeen")
     private OffsetDateTime blacklistCauseFirstSeen;
 
     /*
      * The blacklistCauseLastSeen property.
      */
     @Generated
-    @JsonProperty(value = "blacklistCauseLastSeen")
     private OffsetDateTime blacklistCauseLastSeen;
 
     /*
      * The blacklistCauseCount property.
      */
     @Generated
-    @JsonProperty(value = "blacklistCauseCount")
     private Long blacklistCauseCount;
 
     /*
      * The blacklistResourceFirstSeen property.
      */
     @Generated
-    @JsonProperty(value = "blacklistResourceFirstSeen")
     private OffsetDateTime blacklistResourceFirstSeen;
 
     /*
      * The blacklistResourceLastSeen property.
      */
     @Generated
-    @JsonProperty(value = "blacklistResourceLastSeen")
     private OffsetDateTime blacklistResourceLastSeen;
 
     /*
      * The blacklistResourceCount property.
      */
     @Generated
-    @JsonProperty(value = "blacklistResourceCount")
     private Long blacklistResourceCount;
 
     /*
      * The blacklistSequenceFirstSeen property.
      */
     @Generated
-    @JsonProperty(value = "blacklistSequenceFirstSeen")
     private OffsetDateTime blacklistSequenceFirstSeen;
 
     /*
      * The blacklistSequenceLastSeen property.
      */
     @Generated
-    @JsonProperty(value = "blacklistSequenceLastSeen")
     private OffsetDateTime blacklistSequenceLastSeen;
 
     /*
      * The blacklistSequenceCount property.
      */
     @Generated
-    @JsonProperty(value = "blacklistSequenceCount")
     private Long blacklistSequenceCount;
 
     /*
      * The phishCauseCount property.
      */
     @Generated
-    @JsonProperty(value = "phishCauseCount")
     private Long phishCauseCount;
 
     /*
      * The malwareCauseCount property.
      */
     @Generated
-    @JsonProperty(value = "malwareCauseCount")
     private Long malwareCauseCount;
 
     /*
      * The spamCauseCount property.
      */
     @Generated
-    @JsonProperty(value = "spamCauseCount")
     private Long spamCauseCount;
 
     /*
      * The scamCauseCount property.
      */
     @Generated
-    @JsonProperty(value = "scamCauseCount")
     private Long scamCauseCount;
 
     /*
      * The phishResourceCount property.
      */
     @Generated
-    @JsonProperty(value = "phishResourceCount")
     private Long phishResourceCount;
 
     /*
      * The malwareResourceCount property.
      */
     @Generated
-    @JsonProperty(value = "malwareResourceCount")
     private Long malwareResourceCount;
 
     /*
      * The spamResourceCount property.
      */
     @Generated
-    @JsonProperty(value = "spamResourceCount")
     private Long spamResourceCount;
 
     /*
      * The scamResourceCount property.
      */
     @Generated
-    @JsonProperty(value = "scamResourceCount")
     private Long scamResourceCount;
 
     /*
      * The phishSequenceCount property.
      */
     @Generated
-    @JsonProperty(value = "phishSequenceCount")
     private Long phishSequenceCount;
 
     /*
      * The malwareSequenceCount property.
      */
     @Generated
-    @JsonProperty(value = "malwareSequenceCount")
     private Long malwareSequenceCount;
 
     /*
      * The spamSequenceCount property.
      */
     @Generated
-    @JsonProperty(value = "spamSequenceCount")
     private Long spamSequenceCount;
 
     /*
      * The scamSequenceCount property.
      */
     @Generated
-    @JsonProperty(value = "scamSequenceCount")
     private Long scamSequenceCount;
 
     /*
      * The alexaRank property.
      */
     @Generated
-    @JsonProperty(value = "alexaRank")
     private Integer alexaRank;
 
     /*
      * The hostReputationScore property.
      */
     @Generated
-    @JsonProperty(value = "hostReputationScore")
     private Integer hostReputationScore;
 
     /*
      * The hostPhishReputationScore property.
      */
     @Generated
-    @JsonProperty(value = "hostPhishReputationScore")
     private Integer hostPhishReputationScore;
 
     /*
      * The hostMalwareReputationScore property.
      */
     @Generated
-    @JsonProperty(value = "hostMalwareReputationScore")
     private Integer hostMalwareReputationScore;
 
     /*
      * The hostSpamReputationScore property.
      */
     @Generated
-    @JsonProperty(value = "hostSpamReputationScore")
     private Integer hostSpamReputationScore;
 
     /*
      * The hostScamReputationScore property.
      */
     @Generated
-    @JsonProperty(value = "hostScamReputationScore")
     private Integer hostScamReputationScore;
 
     /*
      * The domainReputationScore property.
      */
     @Generated
-    @JsonProperty(value = "domainReputationScore")
     private Integer domainReputationScore;
 
     /*
      * The domainPhishReputationScore property.
      */
     @Generated
-    @JsonProperty(value = "domainPhishReputationScore")
     private Integer domainPhishReputationScore;
 
     /*
      * The domainMalwareReputationScore property.
      */
     @Generated
-    @JsonProperty(value = "domainMalwareReputationScore")
     private Integer domainMalwareReputationScore;
 
     /*
      * The domainSpamReputationScore property.
      */
     @Generated
-    @JsonProperty(value = "domainSpamReputationScore")
     private Integer domainSpamReputationScore;
 
     /*
      * The domainScamReputationScore property.
      */
     @Generated
-    @JsonProperty(value = "domainScamReputationScore")
     private Integer domainScamReputationScore;
 
     /*
      * The uuid property.
      */
     @Generated
-    @JsonProperty(value = "uuid")
     private String uuid;
 
     /**
@@ -666,4 +633,178 @@ public Integer getDomainScamReputationScore() {
     public String getUuid() {
         return this.uuid;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("host", this.host);
+        jsonWriter.writeStringField("domain", this.domain);
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeStringField("blacklistCauseFirstSeen",
+            this.blacklistCauseFirstSeen == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.blacklistCauseFirstSeen));
+        jsonWriter.writeStringField("blacklistCauseLastSeen",
+            this.blacklistCauseLastSeen == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.blacklistCauseLastSeen));
+        jsonWriter.writeNumberField("blacklistCauseCount", this.blacklistCauseCount);
+        jsonWriter.writeStringField("blacklistResourceFirstSeen",
+            this.blacklistResourceFirstSeen == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.blacklistResourceFirstSeen));
+        jsonWriter.writeStringField("blacklistResourceLastSeen",
+            this.blacklistResourceLastSeen == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.blacklistResourceLastSeen));
+        jsonWriter.writeNumberField("blacklistResourceCount", this.blacklistResourceCount);
+        jsonWriter.writeStringField("blacklistSequenceFirstSeen",
+            this.blacklistSequenceFirstSeen == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.blacklistSequenceFirstSeen));
+        jsonWriter.writeStringField("blacklistSequenceLastSeen",
+            this.blacklistSequenceLastSeen == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.blacklistSequenceLastSeen));
+        jsonWriter.writeNumberField("blacklistSequenceCount", this.blacklistSequenceCount);
+        jsonWriter.writeNumberField("phishCauseCount", this.phishCauseCount);
+        jsonWriter.writeNumberField("malwareCauseCount", this.malwareCauseCount);
+        jsonWriter.writeNumberField("spamCauseCount", this.spamCauseCount);
+        jsonWriter.writeNumberField("scamCauseCount", this.scamCauseCount);
+        jsonWriter.writeNumberField("phishResourceCount", this.phishResourceCount);
+        jsonWriter.writeNumberField("malwareResourceCount", this.malwareResourceCount);
+        jsonWriter.writeNumberField("spamResourceCount", this.spamResourceCount);
+        jsonWriter.writeNumberField("scamResourceCount", this.scamResourceCount);
+        jsonWriter.writeNumberField("phishSequenceCount", this.phishSequenceCount);
+        jsonWriter.writeNumberField("malwareSequenceCount", this.malwareSequenceCount);
+        jsonWriter.writeNumberField("spamSequenceCount", this.spamSequenceCount);
+        jsonWriter.writeNumberField("scamSequenceCount", this.scamSequenceCount);
+        jsonWriter.writeNumberField("alexaRank", this.alexaRank);
+        jsonWriter.writeNumberField("hostReputationScore", this.hostReputationScore);
+        jsonWriter.writeNumberField("hostPhishReputationScore", this.hostPhishReputationScore);
+        jsonWriter.writeNumberField("hostMalwareReputationScore", this.hostMalwareReputationScore);
+        jsonWriter.writeNumberField("hostSpamReputationScore", this.hostSpamReputationScore);
+        jsonWriter.writeNumberField("hostScamReputationScore", this.hostScamReputationScore);
+        jsonWriter.writeNumberField("domainReputationScore", this.domainReputationScore);
+        jsonWriter.writeNumberField("domainPhishReputationScore", this.domainPhishReputationScore);
+        jsonWriter.writeNumberField("domainMalwareReputationScore", this.domainMalwareReputationScore);
+        jsonWriter.writeNumberField("domainSpamReputationScore", this.domainSpamReputationScore);
+        jsonWriter.writeNumberField("domainScamReputationScore", this.domainScamReputationScore);
+        jsonWriter.writeStringField("uuid", this.uuid);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of HostCore from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of HostCore if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the HostCore.
+     */
+    @Generated
+    public static HostCore fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            HostCore deserializedHostCore = new HostCore();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("host".equals(fieldName)) {
+                    deserializedHostCore.host = reader.getString();
+                } else if ("domain".equals(fieldName)) {
+                    deserializedHostCore.domain = reader.getString();
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedHostCore.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedHostCore.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedHostCore.count = reader.getNullable(JsonReader::getLong);
+                } else if ("blacklistCauseFirstSeen".equals(fieldName)) {
+                    deserializedHostCore.blacklistCauseFirstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("blacklistCauseLastSeen".equals(fieldName)) {
+                    deserializedHostCore.blacklistCauseLastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("blacklistCauseCount".equals(fieldName)) {
+                    deserializedHostCore.blacklistCauseCount = reader.getNullable(JsonReader::getLong);
+                } else if ("blacklistResourceFirstSeen".equals(fieldName)) {
+                    deserializedHostCore.blacklistResourceFirstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("blacklistResourceLastSeen".equals(fieldName)) {
+                    deserializedHostCore.blacklistResourceLastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("blacklistResourceCount".equals(fieldName)) {
+                    deserializedHostCore.blacklistResourceCount = reader.getNullable(JsonReader::getLong);
+                } else if ("blacklistSequenceFirstSeen".equals(fieldName)) {
+                    deserializedHostCore.blacklistSequenceFirstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("blacklistSequenceLastSeen".equals(fieldName)) {
+                    deserializedHostCore.blacklistSequenceLastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("blacklistSequenceCount".equals(fieldName)) {
+                    deserializedHostCore.blacklistSequenceCount = reader.getNullable(JsonReader::getLong);
+                } else if ("phishCauseCount".equals(fieldName)) {
+                    deserializedHostCore.phishCauseCount = reader.getNullable(JsonReader::getLong);
+                } else if ("malwareCauseCount".equals(fieldName)) {
+                    deserializedHostCore.malwareCauseCount = reader.getNullable(JsonReader::getLong);
+                } else if ("spamCauseCount".equals(fieldName)) {
+                    deserializedHostCore.spamCauseCount = reader.getNullable(JsonReader::getLong);
+                } else if ("scamCauseCount".equals(fieldName)) {
+                    deserializedHostCore.scamCauseCount = reader.getNullable(JsonReader::getLong);
+                } else if ("phishResourceCount".equals(fieldName)) {
+                    deserializedHostCore.phishResourceCount = reader.getNullable(JsonReader::getLong);
+                } else if ("malwareResourceCount".equals(fieldName)) {
+                    deserializedHostCore.malwareResourceCount = reader.getNullable(JsonReader::getLong);
+                } else if ("spamResourceCount".equals(fieldName)) {
+                    deserializedHostCore.spamResourceCount = reader.getNullable(JsonReader::getLong);
+                } else if ("scamResourceCount".equals(fieldName)) {
+                    deserializedHostCore.scamResourceCount = reader.getNullable(JsonReader::getLong);
+                } else if ("phishSequenceCount".equals(fieldName)) {
+                    deserializedHostCore.phishSequenceCount = reader.getNullable(JsonReader::getLong);
+                } else if ("malwareSequenceCount".equals(fieldName)) {
+                    deserializedHostCore.malwareSequenceCount = reader.getNullable(JsonReader::getLong);
+                } else if ("spamSequenceCount".equals(fieldName)) {
+                    deserializedHostCore.spamSequenceCount = reader.getNullable(JsonReader::getLong);
+                } else if ("scamSequenceCount".equals(fieldName)) {
+                    deserializedHostCore.scamSequenceCount = reader.getNullable(JsonReader::getLong);
+                } else if ("alexaRank".equals(fieldName)) {
+                    deserializedHostCore.alexaRank = reader.getNullable(JsonReader::getInt);
+                } else if ("hostReputationScore".equals(fieldName)) {
+                    deserializedHostCore.hostReputationScore = reader.getNullable(JsonReader::getInt);
+                } else if ("hostPhishReputationScore".equals(fieldName)) {
+                    deserializedHostCore.hostPhishReputationScore = reader.getNullable(JsonReader::getInt);
+                } else if ("hostMalwareReputationScore".equals(fieldName)) {
+                    deserializedHostCore.hostMalwareReputationScore = reader.getNullable(JsonReader::getInt);
+                } else if ("hostSpamReputationScore".equals(fieldName)) {
+                    deserializedHostCore.hostSpamReputationScore = reader.getNullable(JsonReader::getInt);
+                } else if ("hostScamReputationScore".equals(fieldName)) {
+                    deserializedHostCore.hostScamReputationScore = reader.getNullable(JsonReader::getInt);
+                } else if ("domainReputationScore".equals(fieldName)) {
+                    deserializedHostCore.domainReputationScore = reader.getNullable(JsonReader::getInt);
+                } else if ("domainPhishReputationScore".equals(fieldName)) {
+                    deserializedHostCore.domainPhishReputationScore = reader.getNullable(JsonReader::getInt);
+                } else if ("domainMalwareReputationScore".equals(fieldName)) {
+                    deserializedHostCore.domainMalwareReputationScore = reader.getNullable(JsonReader::getInt);
+                } else if ("domainSpamReputationScore".equals(fieldName)) {
+                    deserializedHostCore.domainSpamReputationScore = reader.getNullable(JsonReader::getInt);
+                } else if ("domainScamReputationScore".equals(fieldName)) {
+                    deserializedHostCore.domainScamReputationScore = reader.getNullable(JsonReader::getInt);
+                } else if ("uuid".equals(fieldName)) {
+                    deserializedHostCore.uuid = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedHostCore;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/InnerError.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/InnerError.java
index 56cb78b3f89f..eea43bef3b98 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/InnerError.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/InnerError.java
@@ -5,26 +5,28 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * This is an object containing more specific information than the current object about the error.
  */
 @Immutable
-public final class InnerError {
+public final class InnerError implements JsonSerializable {
 
     /*
      * This is a more specific error code than was provided by the containing error.
      */
     @Generated
-    @JsonProperty(value = "code")
     private String code;
 
     /*
      * This is an additional field representing the value that caused the error to help with debugging.
      */
     @Generated
-    @JsonProperty(value = "value")
     private Object value;
 
     /**
@@ -45,8 +47,7 @@ public String getCode() {
     }
 
     /**
-     * Get the value property: This is an additional field representing the value that caused the error to help with
-     * debugging.
+     * Get the value property: This is an additional field representing the value that caused the error to help with debugging.
      *
      * @return the value value.
      */
@@ -54,4 +55,42 @@ public String getCode() {
     public Object getValue() {
         return this.value;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("code", this.code);
+        jsonWriter.writeUntypedField("value", this.value);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of InnerError from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of InnerError if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the InnerError.
+     */
+    @Generated
+    public static InnerError fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            InnerError deserializedInnerError = new InnerError();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("code".equals(fieldName)) {
+                    deserializedInnerError.code = reader.getString();
+                } else if ("value".equals(fieldName)) {
+                    deserializedInnerError.value = reader.readUntyped();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedInnerError;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/InventoryAsset.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/InventoryAsset.java
index 6c2733b2b67e..9004304b8030 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/InventoryAsset.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/InventoryAsset.java
@@ -5,12 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The InventoryAsset model.
  */
 @Immutable
-public class InventoryAsset {
+public class InventoryAsset implements JsonSerializable {
 
     /**
      * Creates an instance of InventoryAsset class.
@@ -18,4 +23,34 @@ public class InventoryAsset {
     @Generated
     protected InventoryAsset() {
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of InventoryAsset from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of InventoryAsset if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the InventoryAsset.
+     */
+    @Generated
+    public static InventoryAsset fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            InventoryAsset deserializedInventoryAsset = new InventoryAsset();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                reader.skipChildren();
+            }
+            return deserializedInventoryAsset;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpAddressAsset.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpAddressAsset.java
index eaf55f17626a..f75a0632a2b6 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpAddressAsset.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpAddressAsset.java
@@ -5,8 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -19,175 +23,150 @@ public final class IpAddressAsset extends InventoryAsset {
      * The ipAddress property.
      */
     @Generated
-    @JsonProperty(value = "ipAddress")
     private String ipAddress;
 
     /*
      * The asns property.
      */
     @Generated
-    @JsonProperty(value = "asns")
     private List asns;
 
     /*
      * The reputations property.
      */
     @Generated
-    @JsonProperty(value = "reputations")
     private List reputations;
 
     /*
      * The webComponents property.
      */
     @Generated
-    @JsonProperty(value = "webComponents")
     private List webComponents;
 
     /*
      * The netRanges property.
      */
     @Generated
-    @JsonProperty(value = "netRanges")
     private List netRanges;
 
     /*
      * The headers property.
      */
     @Generated
-    @JsonProperty(value = "headers")
     private List headers;
 
     /*
      * The attributes property.
      */
     @Generated
-    @JsonProperty(value = "attributes")
     private List attributes;
 
     /*
      * The cookies property.
      */
     @Generated
-    @JsonProperty(value = "cookies")
     private List cookies;
 
     /*
      * The sslCerts property.
      */
     @Generated
-    @JsonProperty(value = "sslCerts")
     private List sslCerts;
 
     /*
      * The services property.
      */
     @Generated
-    @JsonProperty(value = "services")
     private List services;
 
     /*
      * The ipBlocks property.
      */
     @Generated
-    @JsonProperty(value = "ipBlocks")
     private List ipBlocks;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The banners property.
      */
     @Generated
-    @JsonProperty(value = "banners")
     private List banners;
 
     /*
      * The scanMetadata property.
      */
     @Generated
-    @JsonProperty(value = "scanMetadata")
     private List scanMetadata;
 
     /*
      * The nsRecord property.
      */
     @Generated
-    @JsonProperty(value = "nsRecord")
     private List nsRecord;
 
     /*
      * The mxRecord property.
      */
     @Generated
-    @JsonProperty(value = "mxRecord")
     private List mxRecord;
 
     /*
      * The location property.
      */
     @Generated
-    @JsonProperty(value = "location")
     private List location;
 
     /*
      * The hosts property.
      */
     @Generated
-    @JsonProperty(value = "hosts")
     private List hosts;
 
     /*
      * The nxdomain property.
      */
     @Generated
-    @JsonProperty(value = "nxdomain")
     private List nxdomain;
 
     /*
      * The sslServerConfig property.
      */
     @Generated
-    @JsonProperty(value = "sslServerConfig")
     private List sslServerConfig;
 
     /*
      * The ipv4 property.
      */
     @Generated
-    @JsonProperty(value = "ipv4")
     private Boolean ipv4;
 
     /*
      * The ipv6 property.
      */
     @Generated
-    @JsonProperty(value = "ipv6")
     private Boolean ipv6;
 
     /**
@@ -446,4 +425,136 @@ public Boolean isIpv4() {
     public Boolean isIpv6() {
         return this.ipv6;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("ipAddress", this.ipAddress);
+        jsonWriter.writeArrayField("asns", this.asns, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("reputations", this.reputations, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("webComponents", this.webComponents, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("netRanges", this.netRanges, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("headers", this.headers, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("attributes", this.attributes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("cookies", this.cookies, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sslCerts", this.sslCerts, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("services", this.services, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("ipBlocks", this.ipBlocks, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeArrayField("banners", this.banners, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("scanMetadata", this.scanMetadata, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("nsRecord", this.nsRecord, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("mxRecord", this.mxRecord, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("location", this.location, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("hosts", this.hosts, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("nxdomain", this.nxdomain, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sslServerConfig", this.sslServerConfig,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeBooleanField("ipv4", this.ipv4);
+        jsonWriter.writeBooleanField("ipv6", this.ipv6);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of IpAddressAsset from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of IpAddressAsset if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the IpAddressAsset.
+     */
+    @Generated
+    public static IpAddressAsset fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            IpAddressAsset deserializedIpAddressAsset = new IpAddressAsset();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("ipAddress".equals(fieldName)) {
+                    deserializedIpAddressAsset.ipAddress = reader.getString();
+                } else if ("asns".equals(fieldName)) {
+                    List asns = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedIpAddressAsset.asns = asns;
+                } else if ("reputations".equals(fieldName)) {
+                    List reputations = reader.readArray(reader1 -> Reputation.fromJson(reader1));
+                    deserializedIpAddressAsset.reputations = reputations;
+                } else if ("webComponents".equals(fieldName)) {
+                    List webComponents = reader.readArray(reader1 -> WebComponent.fromJson(reader1));
+                    deserializedIpAddressAsset.webComponents = webComponents;
+                } else if ("netRanges".equals(fieldName)) {
+                    List netRanges = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpAddressAsset.netRanges = netRanges;
+                } else if ("headers".equals(fieldName)) {
+                    List headers = reader.readArray(reader1 -> ObservedHeader.fromJson(reader1));
+                    deserializedIpAddressAsset.headers = headers;
+                } else if ("attributes".equals(fieldName)) {
+                    List attributes = reader.readArray(reader1 -> Attribute.fromJson(reader1));
+                    deserializedIpAddressAsset.attributes = attributes;
+                } else if ("cookies".equals(fieldName)) {
+                    List cookies = reader.readArray(reader1 -> Cookie.fromJson(reader1));
+                    deserializedIpAddressAsset.cookies = cookies;
+                } else if ("sslCerts".equals(fieldName)) {
+                    List sslCerts = reader.readArray(reader1 -> SslCertAsset.fromJson(reader1));
+                    deserializedIpAddressAsset.sslCerts = sslCerts;
+                } else if ("services".equals(fieldName)) {
+                    List services = reader.readArray(reader1 -> Service.fromJson(reader1));
+                    deserializedIpAddressAsset.services = services;
+                } else if ("ipBlocks".equals(fieldName)) {
+                    List ipBlocks = reader.readArray(reader1 -> IpBlock.fromJson(reader1));
+                    deserializedIpAddressAsset.ipBlocks = ipBlocks;
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedIpAddressAsset.sources = sources;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedIpAddressAsset.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedIpAddressAsset.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedIpAddressAsset.count = reader.getNullable(JsonReader::getLong);
+                } else if ("banners".equals(fieldName)) {
+                    List banners = reader.readArray(reader1 -> Banner.fromJson(reader1));
+                    deserializedIpAddressAsset.banners = banners;
+                } else if ("scanMetadata".equals(fieldName)) {
+                    List scanMetadata = reader.readArray(reader1 -> ScanMetadata.fromJson(reader1));
+                    deserializedIpAddressAsset.scanMetadata = scanMetadata;
+                } else if ("nsRecord".equals(fieldName)) {
+                    List nsRecord = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedIpAddressAsset.nsRecord = nsRecord;
+                } else if ("mxRecord".equals(fieldName)) {
+                    List mxRecord = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedIpAddressAsset.mxRecord = mxRecord;
+                } else if ("location".equals(fieldName)) {
+                    List location = reader.readArray(reader1 -> ObservedLocation.fromJson(reader1));
+                    deserializedIpAddressAsset.location = location;
+                } else if ("hosts".equals(fieldName)) {
+                    List hosts = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpAddressAsset.hosts = hosts;
+                } else if ("nxdomain".equals(fieldName)) {
+                    List nxdomain = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedIpAddressAsset.nxdomain = nxdomain;
+                } else if ("sslServerConfig".equals(fieldName)) {
+                    List sslServerConfig
+                        = reader.readArray(reader1 -> SslServerConfig.fromJson(reader1));
+                    deserializedIpAddressAsset.sslServerConfig = sslServerConfig;
+                } else if ("ipv4".equals(fieldName)) {
+                    deserializedIpAddressAsset.ipv4 = reader.getNullable(JsonReader::getBoolean);
+                } else if ("ipv6".equals(fieldName)) {
+                    deserializedIpAddressAsset.ipv6 = reader.getNullable(JsonReader::getBoolean);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedIpAddressAsset;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpAddressAssetResource.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpAddressAssetResource.java
index 029cc6522c38..f6f33be80d2c 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpAddressAssetResource.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpAddressAssetResource.java
@@ -5,16 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 /**
  * The IpAddressAssetResource model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("ipAddress")
 @Immutable
 public final class IpAddressAssetResource extends AssetResource {
 
@@ -22,8 +23,7 @@ public final class IpAddressAssetResource extends AssetResource {
      * asset
      */
     @Generated
-    @JsonProperty(value = "asset")
-    private IpAddressAsset asset;
+    private final IpAddressAsset asset;
 
     /**
      * Creates an instance of IpAddressAssetResource class.
@@ -31,8 +31,8 @@ public final class IpAddressAssetResource extends AssetResource {
      * @param asset the asset value to set.
      */
     @Generated
-    @JsonCreator
-    private IpAddressAssetResource(@JsonProperty(value = "asset") IpAddressAsset asset) {
+    private IpAddressAssetResource(IpAddressAsset asset) {
+        setKind("ipAddress");
         this.asset = asset;
     }
 
@@ -45,4 +45,112 @@ private IpAddressAssetResource(@JsonProperty(value = "asset") IpAddressAsset ass
     public IpAddressAsset getAsset() {
         return this.asset;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeStringField("name", getName());
+        jsonWriter.writeStringField("displayName", getDisplayName());
+        jsonWriter.writeStringField("uuid", getUuid());
+        jsonWriter.writeStringField("createdDate",
+            getCreatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getCreatedDate()));
+        jsonWriter.writeStringField("updatedDate",
+            getUpdatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getUpdatedDate()));
+        jsonWriter.writeStringField("state", getState() == null ? null : getState().toString());
+        jsonWriter.writeStringField("externalId", getExternalId());
+        jsonWriter.writeArrayField("labels", getLabels(), (writer, element) -> writer.writeString(element));
+        jsonWriter.writeBooleanField("wildcard", isWildcard());
+        jsonWriter.writeStringField("discoGroupName", getDiscoGroupName());
+        jsonWriter.writeArrayField("auditTrail", getAuditTrail(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("reason", getReason());
+        jsonWriter.writeJsonField("asset", this.asset);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of IpAddressAssetResource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of IpAddressAssetResource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the IpAddressAssetResource.
+     */
+    @Generated
+    public static IpAddressAssetResource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String kind = "ipAddress";
+            String name = null;
+            String displayName = null;
+            String uuid = null;
+            OffsetDateTime createdDate = null;
+            OffsetDateTime updatedDate = null;
+            AssetState state = null;
+            String externalId = null;
+            List labels = null;
+            Boolean wildcard = null;
+            String discoGroupName = null;
+            List auditTrail = null;
+            String reason = null;
+            IpAddressAsset asset = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("uuid".equals(fieldName)) {
+                    uuid = reader.getString();
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("updatedDate".equals(fieldName)) {
+                    updatedDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("state".equals(fieldName)) {
+                    state = AssetState.fromString(reader.getString());
+                } else if ("externalId".equals(fieldName)) {
+                    externalId = reader.getString();
+                } else if ("labels".equals(fieldName)) {
+                    labels = reader.readArray(reader1 -> reader1.getString());
+                } else if ("wildcard".equals(fieldName)) {
+                    wildcard = reader.getNullable(JsonReader::getBoolean);
+                } else if ("discoGroupName".equals(fieldName)) {
+                    discoGroupName = reader.getString();
+                } else if ("auditTrail".equals(fieldName)) {
+                    auditTrail = reader.readArray(reader1 -> AuditTrailItem.fromJson(reader1));
+                } else if ("reason".equals(fieldName)) {
+                    reason = reader.getString();
+                } else if ("asset".equals(fieldName)) {
+                    asset = IpAddressAsset.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            IpAddressAssetResource deserializedIpAddressAssetResource = new IpAddressAssetResource(asset);
+            deserializedIpAddressAssetResource.setId(id);
+            deserializedIpAddressAssetResource.setKind(kind);
+            deserializedIpAddressAssetResource.setName(name);
+            deserializedIpAddressAssetResource.setDisplayName(displayName);
+            deserializedIpAddressAssetResource.setUuid(uuid);
+            deserializedIpAddressAssetResource.setCreatedDate(createdDate);
+            deserializedIpAddressAssetResource.setUpdatedDate(updatedDate);
+            deserializedIpAddressAssetResource.setState(state);
+            deserializedIpAddressAssetResource.setExternalId(externalId);
+            deserializedIpAddressAssetResource.setLabels(labels);
+            deserializedIpAddressAssetResource.setWildcard(wildcard);
+            deserializedIpAddressAssetResource.setDiscoGroupName(discoGroupName);
+            deserializedIpAddressAssetResource.setAuditTrail(auditTrail);
+            deserializedIpAddressAssetResource.setReason(reason);
+            return deserializedIpAddressAssetResource;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpBlock.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpBlock.java
index 5fcb98c8e52f..994944809124 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpBlock.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpBlock.java
@@ -5,56 +5,55 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The IpBlock model.
  */
 @Immutable
-public final class IpBlock {
+public final class IpBlock implements JsonSerializable {
 
     /*
      * The ipBlock property.
      */
     @Generated
-    @JsonProperty(value = "ipBlock")
     private String ipBlock;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /**
@@ -123,4 +122,59 @@ public Long getCount() {
     public Boolean isRecent() {
         return this.recent;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("ipBlock", this.ipBlock);
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeBooleanField("recent", this.recent);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of IpBlock from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of IpBlock if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the IpBlock.
+     */
+    @Generated
+    public static IpBlock fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            IpBlock deserializedIpBlock = new IpBlock();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("ipBlock".equals(fieldName)) {
+                    deserializedIpBlock.ipBlock = reader.getString();
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedIpBlock.sources = sources;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedIpBlock.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedIpBlock.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedIpBlock.count = reader.getNullable(JsonReader::getLong);
+                } else if ("recent".equals(fieldName)) {
+                    deserializedIpBlock.recent = reader.getNullable(JsonReader::getBoolean);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedIpBlock;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpBlockAsset.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpBlockAsset.java
index 98127ba9d076..2a251dbf1a03 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpBlockAsset.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpBlockAsset.java
@@ -5,8 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -19,217 +23,186 @@ public final class IpBlockAsset extends InventoryAsset {
      * The ipBlock property.
      */
     @Generated
-    @JsonProperty(value = "ipBlock")
     private String ipBlock;
 
     /*
      * The asns property.
      */
     @Generated
-    @JsonProperty(value = "asns")
     private List asns;
 
     /*
      * The bgpPrefixes property.
      */
     @Generated
-    @JsonProperty(value = "bgpPrefixes")
     private List bgpPrefixes;
 
     /*
      * The netNames property.
      */
     @Generated
-    @JsonProperty(value = "netNames")
     private List netNames;
 
     /*
      * The registrantContacts property.
      */
     @Generated
-    @JsonProperty(value = "registrantContacts")
     private List registrantContacts;
 
     /*
      * The registrantOrgs property.
      */
     @Generated
-    @JsonProperty(value = "registrantOrgs")
     private List registrantOrgs;
 
     /*
      * The adminContacts property.
      */
     @Generated
-    @JsonProperty(value = "adminContacts")
     private List adminContacts;
 
     /*
      * The technicalContacts property.
      */
     @Generated
-    @JsonProperty(value = "technicalContacts")
     private List technicalContacts;
 
     /*
      * The registrarCreatedAt property.
      */
     @Generated
-    @JsonProperty(value = "registrarCreatedAt")
     private List registrarCreatedAt;
 
     /*
      * The registrarUpdatedAt property.
      */
     @Generated
-    @JsonProperty(value = "registrarUpdatedAt")
     private List registrarUpdatedAt;
 
     /*
      * The netRanges property.
      */
     @Generated
-    @JsonProperty(value = "netRanges")
     private List netRanges;
 
     /*
      * The startIp property.
      */
     @Generated
-    @JsonProperty(value = "startIp")
     private String startIp;
 
     /*
      * The endIp property.
      */
     @Generated
-    @JsonProperty(value = "endIp")
     private String endIp;
 
     /*
      * The reputations property.
      */
     @Generated
-    @JsonProperty(value = "reputations")
     private List reputations;
 
     /*
      * The detailedFromWhoisAt property.
      */
     @Generated
-    @JsonProperty(value = "detailedFromWhoisAt")
     private OffsetDateTime detailedFromWhoisAt;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The location property.
      */
     @Generated
-    @JsonProperty(value = "location")
     private List location;
 
     /*
      * The registrarExpiresAt property.
      */
     @Generated
-    @JsonProperty(value = "registrarExpiresAt")
     private List registrarExpiresAt;
 
     /*
      * The registrantNames property.
      */
     @Generated
-    @JsonProperty(value = "registrantNames")
     private List registrantNames;
 
     /*
      * The adminNames property.
      */
     @Generated
-    @JsonProperty(value = "adminNames")
     private List adminNames;
 
     /*
      * The technicalNames property.
      */
     @Generated
-    @JsonProperty(value = "technicalNames")
     private List technicalNames;
 
     /*
      * The adminOrgs property.
      */
     @Generated
-    @JsonProperty(value = "adminOrgs")
     private List adminOrgs;
 
     /*
      * The technicalOrgs property.
      */
     @Generated
-    @JsonProperty(value = "technicalOrgs")
     private List technicalOrgs;
 
     /*
      * The registrantPhones property.
      */
     @Generated
-    @JsonProperty(value = "registrantPhones")
     private List registrantPhones;
 
     /*
      * The adminPhones property.
      */
     @Generated
-    @JsonProperty(value = "adminPhones")
     private List adminPhones;
 
     /*
      * The technicalPhones property.
      */
     @Generated
-    @JsonProperty(value = "technicalPhones")
     private List technicalPhones;
 
     /*
      * The ipv4 property.
      */
     @Generated
-    @JsonProperty(value = "ipv4")
     private Boolean ipv4;
 
     /*
      * The ipv6 property.
      */
     @Generated
-    @JsonProperty(value = "ipv6")
     private Boolean ipv6;
 
     /**
@@ -548,4 +521,174 @@ public Boolean isIpv4() {
     public Boolean isIpv6() {
         return this.ipv6;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("ipBlock", this.ipBlock);
+        jsonWriter.writeArrayField("asns", this.asns, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("bgpPrefixes", this.bgpPrefixes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("netNames", this.netNames, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrantContacts", this.registrantContacts,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrantOrgs", this.registrantOrgs,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("adminContacts", this.adminContacts, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("technicalContacts", this.technicalContacts,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrarCreatedAt", this.registrarCreatedAt,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrarUpdatedAt", this.registrarUpdatedAt,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("netRanges", this.netRanges, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("startIp", this.startIp);
+        jsonWriter.writeStringField("endIp", this.endIp);
+        jsonWriter.writeArrayField("reputations", this.reputations, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("detailedFromWhoisAt",
+            this.detailedFromWhoisAt == null
+                ? null
+                : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.detailedFromWhoisAt));
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeArrayField("location", this.location, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrarExpiresAt", this.registrarExpiresAt,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrantNames", this.registrantNames,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("adminNames", this.adminNames, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("technicalNames", this.technicalNames,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("adminOrgs", this.adminOrgs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("technicalOrgs", this.technicalOrgs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("registrantPhones", this.registrantPhones,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("adminPhones", this.adminPhones, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("technicalPhones", this.technicalPhones,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeBooleanField("ipv4", this.ipv4);
+        jsonWriter.writeBooleanField("ipv6", this.ipv6);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of IpBlockAsset from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of IpBlockAsset if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the IpBlockAsset.
+     */
+    @Generated
+    public static IpBlockAsset fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            IpBlockAsset deserializedIpBlockAsset = new IpBlockAsset();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("ipBlock".equals(fieldName)) {
+                    deserializedIpBlockAsset.ipBlock = reader.getString();
+                } else if ("asns".equals(fieldName)) {
+                    List asns = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedIpBlockAsset.asns = asns;
+                } else if ("bgpPrefixes".equals(fieldName)) {
+                    List bgpPrefixes = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.bgpPrefixes = bgpPrefixes;
+                } else if ("netNames".equals(fieldName)) {
+                    List netNames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.netNames = netNames;
+                } else if ("registrantContacts".equals(fieldName)) {
+                    List registrantContacts
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.registrantContacts = registrantContacts;
+                } else if ("registrantOrgs".equals(fieldName)) {
+                    List registrantOrgs = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.registrantOrgs = registrantOrgs;
+                } else if ("adminContacts".equals(fieldName)) {
+                    List adminContacts = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.adminContacts = adminContacts;
+                } else if ("technicalContacts".equals(fieldName)) {
+                    List technicalContacts
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.technicalContacts = technicalContacts;
+                } else if ("registrarCreatedAt".equals(fieldName)) {
+                    List registrarCreatedAt = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedIpBlockAsset.registrarCreatedAt = registrarCreatedAt;
+                } else if ("registrarUpdatedAt".equals(fieldName)) {
+                    List registrarUpdatedAt = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedIpBlockAsset.registrarUpdatedAt = registrarUpdatedAt;
+                } else if ("netRanges".equals(fieldName)) {
+                    List netRanges = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.netRanges = netRanges;
+                } else if ("startIp".equals(fieldName)) {
+                    deserializedIpBlockAsset.startIp = reader.getString();
+                } else if ("endIp".equals(fieldName)) {
+                    deserializedIpBlockAsset.endIp = reader.getString();
+                } else if ("reputations".equals(fieldName)) {
+                    List reputations = reader.readArray(reader1 -> Reputation.fromJson(reader1));
+                    deserializedIpBlockAsset.reputations = reputations;
+                } else if ("detailedFromWhoisAt".equals(fieldName)) {
+                    deserializedIpBlockAsset.detailedFromWhoisAt
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedIpBlockAsset.sources = sources;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedIpBlockAsset.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedIpBlockAsset.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedIpBlockAsset.count = reader.getNullable(JsonReader::getLong);
+                } else if ("location".equals(fieldName)) {
+                    List location = reader.readArray(reader1 -> ObservedLocation.fromJson(reader1));
+                    deserializedIpBlockAsset.location = location;
+                } else if ("registrarExpiresAt".equals(fieldName)) {
+                    List registrarExpiresAt = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedIpBlockAsset.registrarExpiresAt = registrarExpiresAt;
+                } else if ("registrantNames".equals(fieldName)) {
+                    List registrantNames
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.registrantNames = registrantNames;
+                } else if ("adminNames".equals(fieldName)) {
+                    List adminNames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.adminNames = adminNames;
+                } else if ("technicalNames".equals(fieldName)) {
+                    List technicalNames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.technicalNames = technicalNames;
+                } else if ("adminOrgs".equals(fieldName)) {
+                    List adminOrgs = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.adminOrgs = adminOrgs;
+                } else if ("technicalOrgs".equals(fieldName)) {
+                    List technicalOrgs = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.technicalOrgs = technicalOrgs;
+                } else if ("registrantPhones".equals(fieldName)) {
+                    List registrantPhones
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.registrantPhones = registrantPhones;
+                } else if ("adminPhones".equals(fieldName)) {
+                    List adminPhones = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.adminPhones = adminPhones;
+                } else if ("technicalPhones".equals(fieldName)) {
+                    List technicalPhones
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedIpBlockAsset.technicalPhones = technicalPhones;
+                } else if ("ipv4".equals(fieldName)) {
+                    deserializedIpBlockAsset.ipv4 = reader.getNullable(JsonReader::getBoolean);
+                } else if ("ipv6".equals(fieldName)) {
+                    deserializedIpBlockAsset.ipv6 = reader.getNullable(JsonReader::getBoolean);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedIpBlockAsset;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpBlockAssetResource.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpBlockAssetResource.java
index 4d8d6492fd71..2d1e0e28b124 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpBlockAssetResource.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/IpBlockAssetResource.java
@@ -5,16 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 /**
  * The IpBlockAssetResource model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("ipBlock")
 @Immutable
 public final class IpBlockAssetResource extends AssetResource {
 
@@ -22,8 +23,7 @@ public final class IpBlockAssetResource extends AssetResource {
      * asset
      */
     @Generated
-    @JsonProperty(value = "asset")
-    private IpBlockAsset asset;
+    private final IpBlockAsset asset;
 
     /**
      * Creates an instance of IpBlockAssetResource class.
@@ -31,8 +31,8 @@ public final class IpBlockAssetResource extends AssetResource {
      * @param asset the asset value to set.
      */
     @Generated
-    @JsonCreator
-    private IpBlockAssetResource(@JsonProperty(value = "asset") IpBlockAsset asset) {
+    private IpBlockAssetResource(IpBlockAsset asset) {
+        setKind("ipBlock");
         this.asset = asset;
     }
 
@@ -45,4 +45,112 @@ private IpBlockAssetResource(@JsonProperty(value = "asset") IpBlockAsset asset)
     public IpBlockAsset getAsset() {
         return this.asset;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeStringField("name", getName());
+        jsonWriter.writeStringField("displayName", getDisplayName());
+        jsonWriter.writeStringField("uuid", getUuid());
+        jsonWriter.writeStringField("createdDate",
+            getCreatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getCreatedDate()));
+        jsonWriter.writeStringField("updatedDate",
+            getUpdatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getUpdatedDate()));
+        jsonWriter.writeStringField("state", getState() == null ? null : getState().toString());
+        jsonWriter.writeStringField("externalId", getExternalId());
+        jsonWriter.writeArrayField("labels", getLabels(), (writer, element) -> writer.writeString(element));
+        jsonWriter.writeBooleanField("wildcard", isWildcard());
+        jsonWriter.writeStringField("discoGroupName", getDiscoGroupName());
+        jsonWriter.writeArrayField("auditTrail", getAuditTrail(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("reason", getReason());
+        jsonWriter.writeJsonField("asset", this.asset);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of IpBlockAssetResource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of IpBlockAssetResource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the IpBlockAssetResource.
+     */
+    @Generated
+    public static IpBlockAssetResource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String kind = "ipBlock";
+            String name = null;
+            String displayName = null;
+            String uuid = null;
+            OffsetDateTime createdDate = null;
+            OffsetDateTime updatedDate = null;
+            AssetState state = null;
+            String externalId = null;
+            List labels = null;
+            Boolean wildcard = null;
+            String discoGroupName = null;
+            List auditTrail = null;
+            String reason = null;
+            IpBlockAsset asset = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("uuid".equals(fieldName)) {
+                    uuid = reader.getString();
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("updatedDate".equals(fieldName)) {
+                    updatedDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("state".equals(fieldName)) {
+                    state = AssetState.fromString(reader.getString());
+                } else if ("externalId".equals(fieldName)) {
+                    externalId = reader.getString();
+                } else if ("labels".equals(fieldName)) {
+                    labels = reader.readArray(reader1 -> reader1.getString());
+                } else if ("wildcard".equals(fieldName)) {
+                    wildcard = reader.getNullable(JsonReader::getBoolean);
+                } else if ("discoGroupName".equals(fieldName)) {
+                    discoGroupName = reader.getString();
+                } else if ("auditTrail".equals(fieldName)) {
+                    auditTrail = reader.readArray(reader1 -> AuditTrailItem.fromJson(reader1));
+                } else if ("reason".equals(fieldName)) {
+                    reason = reader.getString();
+                } else if ("asset".equals(fieldName)) {
+                    asset = IpBlockAsset.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            IpBlockAssetResource deserializedIpBlockAssetResource = new IpBlockAssetResource(asset);
+            deserializedIpBlockAssetResource.setId(id);
+            deserializedIpBlockAssetResource.setKind(kind);
+            deserializedIpBlockAssetResource.setName(name);
+            deserializedIpBlockAssetResource.setDisplayName(displayName);
+            deserializedIpBlockAssetResource.setUuid(uuid);
+            deserializedIpBlockAssetResource.setCreatedDate(createdDate);
+            deserializedIpBlockAssetResource.setUpdatedDate(updatedDate);
+            deserializedIpBlockAssetResource.setState(state);
+            deserializedIpBlockAssetResource.setExternalId(externalId);
+            deserializedIpBlockAssetResource.setLabels(labels);
+            deserializedIpBlockAssetResource.setWildcard(wildcard);
+            deserializedIpBlockAssetResource.setDiscoGroupName(discoGroupName);
+            deserializedIpBlockAssetResource.setAuditTrail(auditTrail);
+            deserializedIpBlockAssetResource.setReason(reason);
+            return deserializedIpBlockAssetResource;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Location.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Location.java
index 4ec7e4a3ae6f..4d9865e6766a 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Location.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Location.java
@@ -5,89 +5,82 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The Location model.
  */
 @Immutable
-public final class Location {
+public final class Location implements JsonSerializable {
 
     /*
      * The countryCode property.
      */
     @Generated
-    @JsonProperty(value = "countryCode")
     private String countryCode;
 
     /*
      * The countryName property.
      */
     @Generated
-    @JsonProperty(value = "countryName")
     private String countryName;
 
     /*
      * The region property.
      */
     @Generated
-    @JsonProperty(value = "region")
     private String region;
 
     /*
      * The regionName property.
      */
     @Generated
-    @JsonProperty(value = "regionName")
     private String regionName;
 
     /*
      * The city property.
      */
     @Generated
-    @JsonProperty(value = "city")
     private String city;
 
     /*
      * The areaCode property.
      */
     @Generated
-    @JsonProperty(value = "areaCode")
     private Integer areaCode;
 
     /*
      * The postalCode property.
      */
     @Generated
-    @JsonProperty(value = "postalCode")
     private String postalCode;
 
     /*
      * The latitude property.
      */
     @Generated
-    @JsonProperty(value = "latitude")
     private Double latitude;
 
     /*
      * The longitude property.
      */
     @Generated
-    @JsonProperty(value = "longitude")
     private Double longitude;
 
     /*
      * The dmaCode property.
      */
     @Generated
-    @JsonProperty(value = "dmaCode")
     private Integer dmaCode;
 
     /*
      * The metroCodeId property.
      */
     @Generated
-    @JsonProperty(value = "metroCodeId")
     private Integer metroCodeId;
 
     /**
@@ -206,4 +199,69 @@ public Integer getDmaCode() {
     public Integer getMetroCodeId() {
         return this.metroCodeId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("countryCode", this.countryCode);
+        jsonWriter.writeStringField("countryName", this.countryName);
+        jsonWriter.writeStringField("region", this.region);
+        jsonWriter.writeStringField("regionName", this.regionName);
+        jsonWriter.writeStringField("city", this.city);
+        jsonWriter.writeNumberField("areaCode", this.areaCode);
+        jsonWriter.writeStringField("postalCode", this.postalCode);
+        jsonWriter.writeNumberField("latitude", this.latitude);
+        jsonWriter.writeNumberField("longitude", this.longitude);
+        jsonWriter.writeNumberField("dmaCode", this.dmaCode);
+        jsonWriter.writeNumberField("metroCodeId", this.metroCodeId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Location from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Location if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the Location.
+     */
+    @Generated
+    public static Location fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            Location deserializedLocation = new Location();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("countryCode".equals(fieldName)) {
+                    deserializedLocation.countryCode = reader.getString();
+                } else if ("countryName".equals(fieldName)) {
+                    deserializedLocation.countryName = reader.getString();
+                } else if ("region".equals(fieldName)) {
+                    deserializedLocation.region = reader.getString();
+                } else if ("regionName".equals(fieldName)) {
+                    deserializedLocation.regionName = reader.getString();
+                } else if ("city".equals(fieldName)) {
+                    deserializedLocation.city = reader.getString();
+                } else if ("areaCode".equals(fieldName)) {
+                    deserializedLocation.areaCode = reader.getNullable(JsonReader::getInt);
+                } else if ("postalCode".equals(fieldName)) {
+                    deserializedLocation.postalCode = reader.getString();
+                } else if ("latitude".equals(fieldName)) {
+                    deserializedLocation.latitude = reader.getNullable(JsonReader::getDouble);
+                } else if ("longitude".equals(fieldName)) {
+                    deserializedLocation.longitude = reader.getNullable(JsonReader::getDouble);
+                } else if ("dmaCode".equals(fieldName)) {
+                    deserializedLocation.dmaCode = reader.getNullable(JsonReader::getInt);
+                } else if ("metroCodeId".equals(fieldName)) {
+                    deserializedLocation.metroCodeId = reader.getNullable(JsonReader::getInt);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedLocation;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/LogAnalyticsDataConnection.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/LogAnalyticsDataConnection.java
index b25ea5b035f7..132f3ad64273 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/LogAnalyticsDataConnection.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/LogAnalyticsDataConnection.java
@@ -5,16 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
 
 /**
  * The LogAnalyticsDataConnection model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("logAnalytics")
 @Immutable
 public final class LogAnalyticsDataConnection extends DataConnection {
 
@@ -22,8 +21,7 @@ public final class LogAnalyticsDataConnection extends DataConnection {
      * properties
      */
     @Generated
-    @JsonProperty(value = "properties")
-    private LogAnalyticsDataConnectionProperties properties;
+    private final LogAnalyticsDataConnectionProperties properties;
 
     /**
      * Creates an instance of LogAnalyticsDataConnection class.
@@ -31,9 +29,8 @@ public final class LogAnalyticsDataConnection extends DataConnection {
      * @param properties the properties value to set.
      */
     @Generated
-    @JsonCreator
-    private LogAnalyticsDataConnection(
-        @JsonProperty(value = "properties") LogAnalyticsDataConnectionProperties properties) {
+    private LogAnalyticsDataConnection(LogAnalyticsDataConnectionProperties properties) {
+        setKind("logAnalytics");
         this.properties = properties;
     }
 
@@ -46,4 +43,98 @@ private LogAnalyticsDataConnection(
     public LogAnalyticsDataConnectionProperties getProperties() {
         return this.properties;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeStringField("displayName", getDisplayName());
+        jsonWriter.writeStringField("content", getContent() == null ? null : getContent().toString());
+        jsonWriter.writeStringField("frequency", getFrequency() == null ? null : getFrequency().toString());
+        jsonWriter.writeNumberField("frequencyOffset", getFrequencyOffset());
+        jsonWriter.writeBooleanField("active", isActive());
+        jsonWriter.writeJsonField("properties", this.properties);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of LogAnalyticsDataConnection from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of LogAnalyticsDataConnection if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the LogAnalyticsDataConnection.
+     */
+    @Generated
+    public static LogAnalyticsDataConnection fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String name = null;
+            String kind = "logAnalytics";
+            String id = null;
+            String displayName = null;
+            DataConnectionContent content = null;
+            OffsetDateTime createdDate = null;
+            DataConnectionFrequency frequency = null;
+            Integer frequencyOffset = null;
+            OffsetDateTime updatedDate = null;
+            OffsetDateTime userUpdatedAt = null;
+            Boolean active = null;
+            String inactiveMessage = null;
+            LogAnalyticsDataConnectionProperties properties = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("content".equals(fieldName)) {
+                    content = DataConnectionContent.fromString(reader.getString());
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("frequency".equals(fieldName)) {
+                    frequency = DataConnectionFrequency.fromString(reader.getString());
+                } else if ("frequencyOffset".equals(fieldName)) {
+                    frequencyOffset = reader.getNullable(JsonReader::getInt);
+                } else if ("updatedDate".equals(fieldName)) {
+                    updatedDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("userUpdatedAt".equals(fieldName)) {
+                    userUpdatedAt
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("active".equals(fieldName)) {
+                    active = reader.getNullable(JsonReader::getBoolean);
+                } else if ("inactiveMessage".equals(fieldName)) {
+                    inactiveMessage = reader.getString();
+                } else if ("properties".equals(fieldName)) {
+                    properties = LogAnalyticsDataConnectionProperties.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            LogAnalyticsDataConnection deserializedLogAnalyticsDataConnection
+                = new LogAnalyticsDataConnection(properties);
+            deserializedLogAnalyticsDataConnection.setName(name);
+            deserializedLogAnalyticsDataConnection.setKind(kind);
+            deserializedLogAnalyticsDataConnection.setId(id);
+            deserializedLogAnalyticsDataConnection.setDisplayName(displayName);
+            deserializedLogAnalyticsDataConnection.setContent(content);
+            deserializedLogAnalyticsDataConnection.setCreatedDate(createdDate);
+            deserializedLogAnalyticsDataConnection.setFrequency(frequency);
+            deserializedLogAnalyticsDataConnection.setFrequencyOffset(frequencyOffset);
+            deserializedLogAnalyticsDataConnection.setUpdatedDate(updatedDate);
+            deserializedLogAnalyticsDataConnection.setUserUpdatedAt(userUpdatedAt);
+            deserializedLogAnalyticsDataConnection.setActive(active);
+            deserializedLogAnalyticsDataConnection.setInactiveMessage(inactiveMessage);
+            return deserializedLogAnalyticsDataConnection;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/LogAnalyticsDataConnectionData.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/LogAnalyticsDataConnectionData.java
index abd036df7b33..af929273e80e 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/LogAnalyticsDataConnectionData.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/LogAnalyticsDataConnectionData.java
@@ -5,16 +5,14 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The LogAnalyticsDataConnectionData model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("logAnalytics")
 @Fluent
 public final class LogAnalyticsDataConnectionData extends DataConnectionData {
 
@@ -22,8 +20,7 @@ public final class LogAnalyticsDataConnectionData extends DataConnectionData {
      * properties
      */
     @Generated
-    @JsonProperty(value = "properties")
-    private LogAnalyticsDataConnectionProperties properties;
+    private final LogAnalyticsDataConnectionProperties properties;
 
     /**
      * Creates an instance of LogAnalyticsDataConnectionData class.
@@ -31,9 +28,8 @@ public final class LogAnalyticsDataConnectionData extends DataConnectionData {
      * @param properties the properties value to set.
      */
     @Generated
-    @JsonCreator
-    public LogAnalyticsDataConnectionData(
-        @JsonProperty(value = "properties") LogAnalyticsDataConnectionProperties properties) {
+    public LogAnalyticsDataConnectionData(LogAnalyticsDataConnectionProperties properties) {
+        setKind("logAnalytics");
         this.properties = properties;
     }
 
@@ -86,4 +82,67 @@ public LogAnalyticsDataConnectionData setFrequencyOffset(Integer frequencyOffset
         super.setFrequencyOffset(frequencyOffset);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeStringField("name", getName());
+        jsonWriter.writeStringField("content", getContent() == null ? null : getContent().toString());
+        jsonWriter.writeStringField("frequency", getFrequency() == null ? null : getFrequency().toString());
+        jsonWriter.writeNumberField("frequencyOffset", getFrequencyOffset());
+        jsonWriter.writeJsonField("properties", this.properties);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of LogAnalyticsDataConnectionData from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of LogAnalyticsDataConnectionData if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the LogAnalyticsDataConnectionData.
+     */
+    @Generated
+    public static LogAnalyticsDataConnectionData fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String kind = "logAnalytics";
+            String name = null;
+            DataConnectionContent content = null;
+            DataConnectionFrequency frequency = null;
+            Integer frequencyOffset = null;
+            LogAnalyticsDataConnectionProperties properties = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("content".equals(fieldName)) {
+                    content = DataConnectionContent.fromString(reader.getString());
+                } else if ("frequency".equals(fieldName)) {
+                    frequency = DataConnectionFrequency.fromString(reader.getString());
+                } else if ("frequencyOffset".equals(fieldName)) {
+                    frequencyOffset = reader.getNullable(JsonReader::getInt);
+                } else if ("properties".equals(fieldName)) {
+                    properties = LogAnalyticsDataConnectionProperties.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            LogAnalyticsDataConnectionData deserializedLogAnalyticsDataConnectionData
+                = new LogAnalyticsDataConnectionData(properties);
+            deserializedLogAnalyticsDataConnectionData.setKind(kind);
+            deserializedLogAnalyticsDataConnectionData.setName(name);
+            deserializedLogAnalyticsDataConnectionData.setContent(content);
+            deserializedLogAnalyticsDataConnectionData.setFrequency(frequency);
+            deserializedLogAnalyticsDataConnectionData.setFrequencyOffset(frequencyOffset);
+            return deserializedLogAnalyticsDataConnectionData;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/LogAnalyticsDataConnectionProperties.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/LogAnalyticsDataConnectionProperties.java
index 2930c3aed109..ab5cb2de8426 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/LogAnalyticsDataConnectionProperties.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/LogAnalyticsDataConnectionProperties.java
@@ -5,7 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The LogAnalyticsDataConnectionProperties model.
@@ -17,14 +20,12 @@ public final class LogAnalyticsDataConnectionProperties extends DataConnectionPr
      * log analytics api key
      */
     @Generated
-    @JsonProperty(value = "apiKey")
     private String apiKey;
 
     /*
      * log analytics workspace id
      */
     @Generated
-    @JsonProperty(value = "workspaceId")
     private String workspaceId;
 
     /**
@@ -77,4 +78,43 @@ public LogAnalyticsDataConnectionProperties setWorkspaceId(String workspaceId) {
         this.workspaceId = workspaceId;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("apiKey", this.apiKey);
+        jsonWriter.writeStringField("workspaceId", this.workspaceId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of LogAnalyticsDataConnectionProperties from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of LogAnalyticsDataConnectionProperties if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the LogAnalyticsDataConnectionProperties.
+     */
+    @Generated
+    public static LogAnalyticsDataConnectionProperties fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            LogAnalyticsDataConnectionProperties deserializedLogAnalyticsDataConnectionProperties
+                = new LogAnalyticsDataConnectionProperties();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("apiKey".equals(fieldName)) {
+                    deserializedLogAnalyticsDataConnectionProperties.apiKey = reader.getString();
+                } else if ("workspaceId".equals(fieldName)) {
+                    deserializedLogAnalyticsDataConnectionProperties.workspaceId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedLogAnalyticsDataConnectionProperties;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedBoolean.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedBoolean.java
index f57d558ca0cb..071c7e0aa740 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedBoolean.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedBoolean.java
@@ -5,7 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -18,14 +23,12 @@ public final class ObservedBoolean extends ObservedValue {
      * The value property.
      */
     @Generated
-    @JsonProperty(value = "value")
     private Boolean value;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /**
@@ -54,4 +57,59 @@ public Boolean isValue() {
     public List getSources() {
         return this.sources;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("firstSeen",
+            getFirstSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getFirstSeen()));
+        jsonWriter.writeStringField("lastSeen",
+            getLastSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getLastSeen()));
+        jsonWriter.writeNumberField("count", getCount());
+        jsonWriter.writeBooleanField("recent", isRecent());
+        jsonWriter.writeBooleanField("value", this.value);
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ObservedBoolean from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ObservedBoolean if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ObservedBoolean.
+     */
+    @Generated
+    public static ObservedBoolean fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ObservedBoolean deserializedObservedBoolean = new ObservedBoolean();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("firstSeen".equals(fieldName)) {
+                    deserializedObservedBoolean.setFirstSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedObservedBoolean.setLastSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("count".equals(fieldName)) {
+                    deserializedObservedBoolean.setCount(reader.getNullable(JsonReader::getLong));
+                } else if ("recent".equals(fieldName)) {
+                    deserializedObservedBoolean.setRecent(reader.getNullable(JsonReader::getBoolean));
+                } else if ("value".equals(fieldName)) {
+                    deserializedObservedBoolean.value = reader.getNullable(JsonReader::getBoolean);
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedObservedBoolean.sources = sources;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedObservedBoolean;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedHeader.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedHeader.java
index 9900e02b2a07..687a15efe4dd 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedHeader.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedHeader.java
@@ -5,7 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * The ObservedHeader model.
@@ -17,14 +22,12 @@ public final class ObservedHeader extends ObservedValue {
      * The headerName property.
      */
     @Generated
-    @JsonProperty(value = "headerName")
     private String headerName;
 
     /*
      * The headerValue property.
      */
     @Generated
-    @JsonProperty(value = "headerValue")
     private String headerValue;
 
     /**
@@ -53,4 +56,58 @@ public String getHeaderName() {
     public String getHeaderValue() {
         return this.headerValue;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("firstSeen",
+            getFirstSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getFirstSeen()));
+        jsonWriter.writeStringField("lastSeen",
+            getLastSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getLastSeen()));
+        jsonWriter.writeNumberField("count", getCount());
+        jsonWriter.writeBooleanField("recent", isRecent());
+        jsonWriter.writeStringField("headerName", this.headerName);
+        jsonWriter.writeStringField("headerValue", this.headerValue);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ObservedHeader from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ObservedHeader if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ObservedHeader.
+     */
+    @Generated
+    public static ObservedHeader fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ObservedHeader deserializedObservedHeader = new ObservedHeader();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("firstSeen".equals(fieldName)) {
+                    deserializedObservedHeader.setFirstSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedObservedHeader.setLastSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("count".equals(fieldName)) {
+                    deserializedObservedHeader.setCount(reader.getNullable(JsonReader::getLong));
+                } else if ("recent".equals(fieldName)) {
+                    deserializedObservedHeader.setRecent(reader.getNullable(JsonReader::getBoolean));
+                } else if ("headerName".equals(fieldName)) {
+                    deserializedObservedHeader.headerName = reader.getString();
+                } else if ("headerValue".equals(fieldName)) {
+                    deserializedObservedHeader.headerValue = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedObservedHeader;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedInteger.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedInteger.java
index 354c6e49c38a..874ad5bc2286 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedInteger.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedInteger.java
@@ -5,7 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -18,14 +23,12 @@ public final class ObservedInteger extends ObservedValue {
      * The value property.
      */
     @Generated
-    @JsonProperty(value = "value")
     private Integer value;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /**
@@ -54,4 +57,59 @@ public Integer getValue() {
     public List getSources() {
         return this.sources;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("firstSeen",
+            getFirstSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getFirstSeen()));
+        jsonWriter.writeStringField("lastSeen",
+            getLastSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getLastSeen()));
+        jsonWriter.writeNumberField("count", getCount());
+        jsonWriter.writeBooleanField("recent", isRecent());
+        jsonWriter.writeNumberField("value", this.value);
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ObservedInteger from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ObservedInteger if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ObservedInteger.
+     */
+    @Generated
+    public static ObservedInteger fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ObservedInteger deserializedObservedInteger = new ObservedInteger();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("firstSeen".equals(fieldName)) {
+                    deserializedObservedInteger.setFirstSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedObservedInteger.setLastSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("count".equals(fieldName)) {
+                    deserializedObservedInteger.setCount(reader.getNullable(JsonReader::getLong));
+                } else if ("recent".equals(fieldName)) {
+                    deserializedObservedInteger.setRecent(reader.getNullable(JsonReader::getBoolean));
+                } else if ("value".equals(fieldName)) {
+                    deserializedObservedInteger.value = reader.getNullable(JsonReader::getInt);
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedObservedInteger.sources = sources;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedObservedInteger;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedIntegers.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedIntegers.java
index fb054fc9848d..9dd829f1bcdd 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedIntegers.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedIntegers.java
@@ -5,7 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -18,14 +23,12 @@ public final class ObservedIntegers extends ObservedValue {
      * The values property.
      */
     @Generated
-    @JsonProperty(value = "values")
     private List values;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /**
@@ -54,4 +57,60 @@ public List getValues() {
     public List getSources() {
         return this.sources;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("firstSeen",
+            getFirstSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getFirstSeen()));
+        jsonWriter.writeStringField("lastSeen",
+            getLastSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getLastSeen()));
+        jsonWriter.writeNumberField("count", getCount());
+        jsonWriter.writeBooleanField("recent", isRecent());
+        jsonWriter.writeArrayField("values", this.values, (writer, element) -> writer.writeInt(element));
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ObservedIntegers from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ObservedIntegers if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ObservedIntegers.
+     */
+    @Generated
+    public static ObservedIntegers fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ObservedIntegers deserializedObservedIntegers = new ObservedIntegers();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("firstSeen".equals(fieldName)) {
+                    deserializedObservedIntegers.setFirstSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedObservedIntegers.setLastSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("count".equals(fieldName)) {
+                    deserializedObservedIntegers.setCount(reader.getNullable(JsonReader::getLong));
+                } else if ("recent".equals(fieldName)) {
+                    deserializedObservedIntegers.setRecent(reader.getNullable(JsonReader::getBoolean));
+                } else if ("values".equals(fieldName)) {
+                    List values = reader.readArray(reader1 -> reader1.getInt());
+                    deserializedObservedIntegers.values = values;
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedObservedIntegers.sources = sources;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedObservedIntegers;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedLocation.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedLocation.java
index 8ce15dbc2f44..7cdd016fac3d 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedLocation.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedLocation.java
@@ -5,7 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -18,14 +23,12 @@ public final class ObservedLocation extends ObservedValue {
      * The value property.
      */
     @Generated
-    @JsonProperty(value = "value")
     private Location value;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /**
@@ -54,4 +57,59 @@ public Location getValue() {
     public List getSources() {
         return this.sources;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("firstSeen",
+            getFirstSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getFirstSeen()));
+        jsonWriter.writeStringField("lastSeen",
+            getLastSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getLastSeen()));
+        jsonWriter.writeNumberField("count", getCount());
+        jsonWriter.writeBooleanField("recent", isRecent());
+        jsonWriter.writeJsonField("value", this.value);
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ObservedLocation from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ObservedLocation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ObservedLocation.
+     */
+    @Generated
+    public static ObservedLocation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ObservedLocation deserializedObservedLocation = new ObservedLocation();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("firstSeen".equals(fieldName)) {
+                    deserializedObservedLocation.setFirstSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedObservedLocation.setLastSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("count".equals(fieldName)) {
+                    deserializedObservedLocation.setCount(reader.getNullable(JsonReader::getLong));
+                } else if ("recent".equals(fieldName)) {
+                    deserializedObservedLocation.setRecent(reader.getNullable(JsonReader::getBoolean));
+                } else if ("value".equals(fieldName)) {
+                    deserializedObservedLocation.value = Location.fromJson(reader);
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedObservedLocation.sources = sources;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedObservedLocation;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedLong.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedLong.java
index 1a24f738235d..94cd3f9b5d09 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedLong.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedLong.java
@@ -5,7 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -18,14 +23,12 @@ public final class ObservedLong extends ObservedValue {
      * The value property.
      */
     @Generated
-    @JsonProperty(value = "value")
     private Long value;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /**
@@ -54,4 +57,59 @@ public Long getValue() {
     public List getSources() {
         return this.sources;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("firstSeen",
+            getFirstSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getFirstSeen()));
+        jsonWriter.writeStringField("lastSeen",
+            getLastSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getLastSeen()));
+        jsonWriter.writeNumberField("count", getCount());
+        jsonWriter.writeBooleanField("recent", isRecent());
+        jsonWriter.writeNumberField("value", this.value);
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ObservedLong from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ObservedLong if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ObservedLong.
+     */
+    @Generated
+    public static ObservedLong fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ObservedLong deserializedObservedLong = new ObservedLong();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("firstSeen".equals(fieldName)) {
+                    deserializedObservedLong.setFirstSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedObservedLong.setLastSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("count".equals(fieldName)) {
+                    deserializedObservedLong.setCount(reader.getNullable(JsonReader::getLong));
+                } else if ("recent".equals(fieldName)) {
+                    deserializedObservedLong.setRecent(reader.getNullable(JsonReader::getBoolean));
+                } else if ("value".equals(fieldName)) {
+                    deserializedObservedLong.value = reader.getNullable(JsonReader::getLong);
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedObservedLong.sources = sources;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedObservedLong;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedPortState.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedPortState.java
index f963d7753d79..e3ef8ab84588 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedPortState.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedPortState.java
@@ -5,7 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * The ObservedPortState model.
@@ -17,14 +22,12 @@ public final class ObservedPortState extends ObservedValue {
      * The value property.
      */
     @Generated
-    @JsonProperty(value = "value")
     private ObservedPortStateValue value;
 
     /*
      * The port property.
      */
     @Generated
-    @JsonProperty(value = "port")
     private Integer port;
 
     /**
@@ -53,4 +56,58 @@ public ObservedPortStateValue getValue() {
     public Integer getPort() {
         return this.port;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("firstSeen",
+            getFirstSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getFirstSeen()));
+        jsonWriter.writeStringField("lastSeen",
+            getLastSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getLastSeen()));
+        jsonWriter.writeNumberField("count", getCount());
+        jsonWriter.writeBooleanField("recent", isRecent());
+        jsonWriter.writeStringField("value", this.value == null ? null : this.value.toString());
+        jsonWriter.writeNumberField("port", this.port);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ObservedPortState from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ObservedPortState if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ObservedPortState.
+     */
+    @Generated
+    public static ObservedPortState fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ObservedPortState deserializedObservedPortState = new ObservedPortState();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("firstSeen".equals(fieldName)) {
+                    deserializedObservedPortState.setFirstSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedObservedPortState.setLastSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("count".equals(fieldName)) {
+                    deserializedObservedPortState.setCount(reader.getNullable(JsonReader::getLong));
+                } else if ("recent".equals(fieldName)) {
+                    deserializedObservedPortState.setRecent(reader.getNullable(JsonReader::getBoolean));
+                } else if ("value".equals(fieldName)) {
+                    deserializedObservedPortState.value = ObservedPortStateValue.fromString(reader.getString());
+                } else if ("port".equals(fieldName)) {
+                    deserializedObservedPortState.port = reader.getNullable(JsonReader::getInt);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedObservedPortState;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedPortStateValue.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedPortStateValue.java
index 9f338eca6e81..179b8fa09c07 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedPortStateValue.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedPortStateValue.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -48,7 +47,6 @@ public ObservedPortStateValue() {
      * @return the corresponding ObservedPortStateValue.
      */
     @Generated
-    @JsonCreator
     public static ObservedPortStateValue fromString(String name) {
         return fromString(name, ObservedPortStateValue.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedString.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedString.java
index 3255e5b281d6..52722bedc926 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedString.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedString.java
@@ -5,7 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -18,14 +23,12 @@ public final class ObservedString extends ObservedValue {
      * The value property.
      */
     @Generated
-    @JsonProperty(value = "value")
     private String value;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /**
@@ -54,4 +57,59 @@ public String getValue() {
     public List getSources() {
         return this.sources;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("firstSeen",
+            getFirstSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getFirstSeen()));
+        jsonWriter.writeStringField("lastSeen",
+            getLastSeen() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getLastSeen()));
+        jsonWriter.writeNumberField("count", getCount());
+        jsonWriter.writeBooleanField("recent", isRecent());
+        jsonWriter.writeStringField("value", this.value);
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ObservedString from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ObservedString if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ObservedString.
+     */
+    @Generated
+    public static ObservedString fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ObservedString deserializedObservedString = new ObservedString();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("firstSeen".equals(fieldName)) {
+                    deserializedObservedString.setFirstSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedObservedString.setLastSeen(
+                        reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("count".equals(fieldName)) {
+                    deserializedObservedString.setCount(reader.getNullable(JsonReader::getLong));
+                } else if ("recent".equals(fieldName)) {
+                    deserializedObservedString.setRecent(reader.getNullable(JsonReader::getBoolean));
+                } else if ("value".equals(fieldName)) {
+                    deserializedObservedString.value = reader.getString();
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedObservedString.sources = sources;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedObservedString;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedValue.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedValue.java
index ab0fdf306fb7..d46d437fbdd4 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedValue.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ObservedValue.java
@@ -5,41 +5,42 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * Template model for observed values.
  */
 @Immutable
-public class ObservedValue {
+public class ObservedValue implements JsonSerializable {
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /**
@@ -88,4 +89,100 @@ public Long getCount() {
     public Boolean isRecent() {
         return this.recent;
     }
+
+    /**
+     * Set the firstSeen property: The firstSeen property.
+     *
+     * @param firstSeen the firstSeen value to set.
+     * @return the ObservedValue object itself.
+     */
+    @Generated
+    ObservedValue setFirstSeen(OffsetDateTime firstSeen) {
+        this.firstSeen = firstSeen;
+        return this;
+    }
+
+    /**
+     * Set the lastSeen property: The lastSeen property.
+     *
+     * @param lastSeen the lastSeen value to set.
+     * @return the ObservedValue object itself.
+     */
+    @Generated
+    ObservedValue setLastSeen(OffsetDateTime lastSeen) {
+        this.lastSeen = lastSeen;
+        return this;
+    }
+
+    /**
+     * Set the count property: The count property.
+     *
+     * @param count the count value to set.
+     * @return the ObservedValue object itself.
+     */
+    @Generated
+    ObservedValue setCount(Long count) {
+        this.count = count;
+        return this;
+    }
+
+    /**
+     * Set the recent property: The recent property.
+     *
+     * @param recent the recent value to set.
+     * @return the ObservedValue object itself.
+     */
+    @Generated
+    ObservedValue setRecent(Boolean recent) {
+        this.recent = recent;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeBooleanField("recent", this.recent);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ObservedValue from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ObservedValue if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ObservedValue.
+     */
+    @Generated
+    public static ObservedValue fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ObservedValue deserializedObservedValue = new ObservedValue();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("firstSeen".equals(fieldName)) {
+                    deserializedObservedValue.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedObservedValue.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedObservedValue.count = reader.getNullable(JsonReader::getLong);
+                } else if ("recent".equals(fieldName)) {
+                    deserializedObservedValue.recent = reader.getNullable(JsonReader::getBoolean);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedObservedValue;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageAsset.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageAsset.java
index 77ad911f0dc3..0e0ed22a0dc0 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageAsset.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageAsset.java
@@ -5,8 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -19,427 +23,366 @@ public final class PageAsset extends InventoryAsset {
      * The url property.
      */
     @Generated
-    @JsonProperty(value = "url")
     private String url;
 
     /*
      * The httpMethod property.
      */
     @Generated
-    @JsonProperty(value = "httpMethod")
     private String httpMethod;
 
     /*
      * The service property.
      */
     @Generated
-    @JsonProperty(value = "service")
     private String service;
 
     /*
      * The ipAddresses property.
      */
     @Generated
-    @JsonProperty(value = "ipAddresses")
     private List ipAddresses;
 
     /*
      * The successful property.
      */
     @Generated
-    @JsonProperty(value = "successful")
     private List successful;
 
     /*
      * The httpResponseCodes property.
      */
     @Generated
-    @JsonProperty(value = "httpResponseCodes")
     private List httpResponseCodes;
 
     /*
      * The httpResponseMessages property.
      */
     @Generated
-    @JsonProperty(value = "httpResponseMessages")
     private List httpResponseMessages;
 
     /*
      * The responseTimes property.
      */
     @Generated
-    @JsonProperty(value = "responseTimes")
     private List responseTimes;
 
     /*
      * The frames property.
      */
     @Generated
-    @JsonProperty(value = "frames")
     private List frames;
 
     /*
      * The windows property.
      */
     @Generated
-    @JsonProperty(value = "windows")
     private List windows;
 
     /*
      * The nonHtmlFrames property.
      */
     @Generated
-    @JsonProperty(value = "nonHtmlFrames")
     private List nonHtmlFrames;
 
     /*
      * The undirectedContent property.
      */
     @Generated
-    @JsonProperty(value = "undirectedContent")
     private List undirectedContent;
 
     /*
      * The contentTypes property.
      */
     @Generated
-    @JsonProperty(value = "contentTypes")
     private List contentTypes;
 
     /*
      * The contentLengths property.
      */
     @Generated
-    @JsonProperty(value = "contentLengths")
     private List contentLengths;
 
     /*
      * The windowNames property.
      */
     @Generated
-    @JsonProperty(value = "windowNames")
     private List windowNames;
 
     /*
      * The charsets property.
      */
     @Generated
-    @JsonProperty(value = "charsets")
     private List charsets;
 
     /*
      * The titles property.
      */
     @Generated
-    @JsonProperty(value = "titles")
     private List titles;
 
     /*
      * The languages property.
      */
     @Generated
-    @JsonProperty(value = "languages")
     private List languages;
 
     /*
      * The responseHeaders property.
      */
     @Generated
-    @JsonProperty(value = "responseHeaders")
     private List responseHeaders;
 
     /*
      * The cookies property.
      */
     @Generated
-    @JsonProperty(value = "cookies")
     private List cookies;
 
     /*
      * The webComponents property.
      */
     @Generated
-    @JsonProperty(value = "webComponents")
     private List webComponents;
 
     /*
      * The attributes property.
      */
     @Generated
-    @JsonProperty(value = "attributes")
     private List attributes;
 
     /*
      * The assetSecurityPolicies property.
      */
     @Generated
-    @JsonProperty(value = "assetSecurityPolicies")
     private List assetSecurityPolicies;
 
     /*
      * The responseBodyMinhashSignatures property.
      */
     @Generated
-    @JsonProperty(value = "responseBodyMinhashSignatures")
     private List responseBodyMinhashSignatures;
 
     /*
      * The fullDomMinhashSignatures property.
      */
     @Generated
-    @JsonProperty(value = "fullDomMinhashSignatures")
     private List fullDomMinhashSignatures;
 
     /*
      * The responseBodyHashSignatures property.
      */
     @Generated
-    @JsonProperty(value = "responseBodyHashSignatures")
     private List responseBodyHashSignatures;
 
     /*
      * The errors property.
      */
     @Generated
-    @JsonProperty(value = "errors")
     private List errors;
 
     /*
      * The sslCerts property.
      */
     @Generated
-    @JsonProperty(value = "sslCerts")
     private List sslCerts;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The cause property.
      */
     @Generated
-    @JsonProperty(value = "cause")
     private PageCause cause;
 
     /*
      * The referrer property.
      */
     @Generated
-    @JsonProperty(value = "referrer")
     private String referrer;
 
     /*
      * The redirectUrls property.
      */
     @Generated
-    @JsonProperty(value = "redirectUrls")
     private List redirectUrls;
 
     /*
      * The redirectType property.
      */
     @Generated
-    @JsonProperty(value = "redirectType")
     private PageAssetRedirectType redirectType;
 
     /*
      * The finalUrls property.
      */
     @Generated
-    @JsonProperty(value = "finalUrls")
     private List finalUrls;
 
     /*
      * The finalResponseCodes property.
      */
     @Generated
-    @JsonProperty(value = "finalResponseCodes")
     private List finalResponseCodes;
 
     /*
      * The parkedPage property.
      */
     @Generated
-    @JsonProperty(value = "parkedPage")
     private List parkedPage;
 
     /*
      * The resourceUrls property.
      */
     @Generated
-    @JsonProperty(value = "resourceUrls")
     private List resourceUrls;
 
     /*
      * The guids property.
      */
     @Generated
-    @JsonProperty(value = "guids")
     private List guids;
 
     /*
      * The finalIpAddresses property.
      */
     @Generated
-    @JsonProperty(value = "finalIpAddresses")
     private List finalIpAddresses;
 
     /*
      * The asns property.
      */
     @Generated
-    @JsonProperty(value = "asns")
     private List asns;
 
     /*
      * The ipBlocks property.
      */
     @Generated
-    @JsonProperty(value = "ipBlocks")
     private List ipBlocks;
 
     /*
      * The finalAsns property.
      */
     @Generated
-    @JsonProperty(value = "finalAsns")
     private List finalAsns;
 
     /*
      * The finalIpBlocks property.
      */
     @Generated
-    @JsonProperty(value = "finalIpBlocks")
     private List finalIpBlocks;
 
     /*
      * The responseBodies property.
      */
     @Generated
-    @JsonProperty(value = "responseBodies")
     private List responseBodies;
 
     /*
      * The domainAsset property.
      */
     @Generated
-    @JsonProperty(value = "domainAsset")
     private DomainAsset domainAsset;
 
     /*
      * The rootUrl property.
      */
     @Generated
-    @JsonProperty(value = "rootUrl")
     private ObservedBoolean rootUrl;
 
     /*
      * The isRootUrl property.
      */
     @Generated
-    @JsonProperty(value = "isRootUrl")
     private Boolean isRootUrl;
 
     /*
      * The location property.
      */
     @Generated
-    @JsonProperty(value = "location")
     private List location;
 
     /*
      * The services property.
      */
     @Generated
-    @JsonProperty(value = "services")
     private List services;
 
     /*
      * The siteStatus property.
      */
     @Generated
-    @JsonProperty(value = "siteStatus")
     private String siteStatus;
 
     /*
      * The cnames property.
      */
     @Generated
-    @JsonProperty(value = "cnames")
     private List cnames;
 
     /*
      * The cdns property.
      */
     @Generated
-    @JsonProperty(value = "cdns")
     private List cdns;
 
     /*
      * The host property.
      */
     @Generated
-    @JsonProperty(value = "host")
     private String host;
 
     /*
      * The domain property.
      */
     @Generated
-    @JsonProperty(value = "domain")
     private String domain;
 
     /*
      * The sslServerConfig property.
      */
     @Generated
-    @JsonProperty(value = "sslServerConfig")
     private List sslServerConfig;
 
     /*
      * The gdprAssetSecurityPolicies property.
      */
     @Generated
-    @JsonProperty(value = "gdprAssetSecurityPolicies")
     private List gdprAssetSecurityPolicies;
 
     /*
      * The ipv4 property.
      */
     @Generated
-    @JsonProperty(value = "ipv4")
     private List ipv4;
 
     /*
      * The ipv6 property.
      */
     @Generated
-    @JsonProperty(value = "ipv6")
     private List ipv6;
 
     /**
@@ -1058,4 +1001,296 @@ public List getIpv4() {
     public List getIpv6() {
         return this.ipv6;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("url", this.url);
+        jsonWriter.writeStringField("httpMethod", this.httpMethod);
+        jsonWriter.writeStringField("service", this.service);
+        jsonWriter.writeArrayField("ipAddresses", this.ipAddresses, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("successful", this.successful, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("httpResponseCodes", this.httpResponseCodes,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("httpResponseMessages", this.httpResponseMessages,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("responseTimes", this.responseTimes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("frames", this.frames, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("windows", this.windows, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("nonHtmlFrames", this.nonHtmlFrames, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("undirectedContent", this.undirectedContent,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("contentTypes", this.contentTypes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("contentLengths", this.contentLengths,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("windowNames", this.windowNames, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("charsets", this.charsets, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("titles", this.titles, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("languages", this.languages, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("responseHeaders", this.responseHeaders,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("cookies", this.cookies, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("webComponents", this.webComponents, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("attributes", this.attributes, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("assetSecurityPolicies", this.assetSecurityPolicies,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("responseBodyMinhashSignatures", this.responseBodyMinhashSignatures,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("fullDomMinhashSignatures", this.fullDomMinhashSignatures,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("responseBodyHashSignatures", this.responseBodyHashSignatures,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("errors", this.errors, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sslCerts", this.sslCerts, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeJsonField("cause", this.cause);
+        jsonWriter.writeStringField("referrer", this.referrer);
+        jsonWriter.writeArrayField("redirectUrls", this.redirectUrls, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("redirectType", this.redirectType == null ? null : this.redirectType.toString());
+        jsonWriter.writeArrayField("finalUrls", this.finalUrls, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("finalResponseCodes", this.finalResponseCodes,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("parkedPage", this.parkedPage, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("resourceUrls", this.resourceUrls, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("guids", this.guids, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("finalIpAddresses", this.finalIpAddresses,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("asns", this.asns, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("ipBlocks", this.ipBlocks, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("finalAsns", this.finalAsns, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("finalIpBlocks", this.finalIpBlocks, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("responseBodies", this.responseBodies,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("domainAsset", this.domainAsset);
+        jsonWriter.writeJsonField("rootUrl", this.rootUrl);
+        jsonWriter.writeBooleanField("isRootUrl", this.isRootUrl);
+        jsonWriter.writeArrayField("location", this.location, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("services", this.services, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("siteStatus", this.siteStatus);
+        jsonWriter.writeArrayField("cnames", this.cnames, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("cdns", this.cdns, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("host", this.host);
+        jsonWriter.writeStringField("domain", this.domain);
+        jsonWriter.writeArrayField("sslServerConfig", this.sslServerConfig,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("gdprAssetSecurityPolicies", this.gdprAssetSecurityPolicies,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("ipv4", this.ipv4, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("ipv6", this.ipv6, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of PageAsset from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of PageAsset if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the PageAsset.
+     */
+    @Generated
+    public static PageAsset fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            PageAsset deserializedPageAsset = new PageAsset();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("url".equals(fieldName)) {
+                    deserializedPageAsset.url = reader.getString();
+                } else if ("httpMethod".equals(fieldName)) {
+                    deserializedPageAsset.httpMethod = reader.getString();
+                } else if ("service".equals(fieldName)) {
+                    deserializedPageAsset.service = reader.getString();
+                } else if ("ipAddresses".equals(fieldName)) {
+                    List ipAddresses = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.ipAddresses = ipAddresses;
+                } else if ("successful".equals(fieldName)) {
+                    List successful = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedPageAsset.successful = successful;
+                } else if ("httpResponseCodes".equals(fieldName)) {
+                    List httpResponseCodes
+                        = reader.readArray(reader1 -> ObservedInteger.fromJson(reader1));
+                    deserializedPageAsset.httpResponseCodes = httpResponseCodes;
+                } else if ("httpResponseMessages".equals(fieldName)) {
+                    List httpResponseMessages
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.httpResponseMessages = httpResponseMessages;
+                } else if ("responseTimes".equals(fieldName)) {
+                    List responseTimes = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedPageAsset.responseTimes = responseTimes;
+                } else if ("frames".equals(fieldName)) {
+                    List frames = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedPageAsset.frames = frames;
+                } else if ("windows".equals(fieldName)) {
+                    List windows = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedPageAsset.windows = windows;
+                } else if ("nonHtmlFrames".equals(fieldName)) {
+                    List nonHtmlFrames
+                        = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedPageAsset.nonHtmlFrames = nonHtmlFrames;
+                } else if ("undirectedContent".equals(fieldName)) {
+                    List undirectedContent
+                        = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedPageAsset.undirectedContent = undirectedContent;
+                } else if ("contentTypes".equals(fieldName)) {
+                    List contentTypes = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.contentTypes = contentTypes;
+                } else if ("contentLengths".equals(fieldName)) {
+                    List contentLengths = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedPageAsset.contentLengths = contentLengths;
+                } else if ("windowNames".equals(fieldName)) {
+                    List windowNames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.windowNames = windowNames;
+                } else if ("charsets".equals(fieldName)) {
+                    List charsets = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.charsets = charsets;
+                } else if ("titles".equals(fieldName)) {
+                    List titles = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.titles = titles;
+                } else if ("languages".equals(fieldName)) {
+                    List languages = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.languages = languages;
+                } else if ("responseHeaders".equals(fieldName)) {
+                    List responseHeaders
+                        = reader.readArray(reader1 -> ObservedHeader.fromJson(reader1));
+                    deserializedPageAsset.responseHeaders = responseHeaders;
+                } else if ("cookies".equals(fieldName)) {
+                    List cookies = reader.readArray(reader1 -> Cookie.fromJson(reader1));
+                    deserializedPageAsset.cookies = cookies;
+                } else if ("webComponents".equals(fieldName)) {
+                    List webComponents = reader.readArray(reader1 -> WebComponent.fromJson(reader1));
+                    deserializedPageAsset.webComponents = webComponents;
+                } else if ("attributes".equals(fieldName)) {
+                    List attributes = reader.readArray(reader1 -> Attribute.fromJson(reader1));
+                    deserializedPageAsset.attributes = attributes;
+                } else if ("assetSecurityPolicies".equals(fieldName)) {
+                    List assetSecurityPolicies
+                        = reader.readArray(reader1 -> AssetSecurityPolicy.fromJson(reader1));
+                    deserializedPageAsset.assetSecurityPolicies = assetSecurityPolicies;
+                } else if ("responseBodyMinhashSignatures".equals(fieldName)) {
+                    List responseBodyMinhashSignatures
+                        = reader.readArray(reader1 -> ObservedIntegers.fromJson(reader1));
+                    deserializedPageAsset.responseBodyMinhashSignatures = responseBodyMinhashSignatures;
+                } else if ("fullDomMinhashSignatures".equals(fieldName)) {
+                    List fullDomMinhashSignatures
+                        = reader.readArray(reader1 -> ObservedIntegers.fromJson(reader1));
+                    deserializedPageAsset.fullDomMinhashSignatures = fullDomMinhashSignatures;
+                } else if ("responseBodyHashSignatures".equals(fieldName)) {
+                    List responseBodyHashSignatures
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.responseBodyHashSignatures = responseBodyHashSignatures;
+                } else if ("errors".equals(fieldName)) {
+                    List errors = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.errors = errors;
+                } else if ("sslCerts".equals(fieldName)) {
+                    List sslCerts = reader.readArray(reader1 -> SslCertAsset.fromJson(reader1));
+                    deserializedPageAsset.sslCerts = sslCerts;
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedPageAsset.sources = sources;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedPageAsset.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedPageAsset.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedPageAsset.count = reader.getNullable(JsonReader::getLong);
+                } else if ("cause".equals(fieldName)) {
+                    deserializedPageAsset.cause = PageCause.fromJson(reader);
+                } else if ("referrer".equals(fieldName)) {
+                    deserializedPageAsset.referrer = reader.getString();
+                } else if ("redirectUrls".equals(fieldName)) {
+                    List redirectUrls = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.redirectUrls = redirectUrls;
+                } else if ("redirectType".equals(fieldName)) {
+                    deserializedPageAsset.redirectType = PageAssetRedirectType.fromString(reader.getString());
+                } else if ("finalUrls".equals(fieldName)) {
+                    List finalUrls = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.finalUrls = finalUrls;
+                } else if ("finalResponseCodes".equals(fieldName)) {
+                    List finalResponseCodes
+                        = reader.readArray(reader1 -> ObservedInteger.fromJson(reader1));
+                    deserializedPageAsset.finalResponseCodes = finalResponseCodes;
+                } else if ("parkedPage".equals(fieldName)) {
+                    List parkedPage = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedPageAsset.parkedPage = parkedPage;
+                } else if ("resourceUrls".equals(fieldName)) {
+                    List resourceUrls = reader.readArray(reader1 -> ResourceUrl.fromJson(reader1));
+                    deserializedPageAsset.resourceUrls = resourceUrls;
+                } else if ("guids".equals(fieldName)) {
+                    List guids = reader.readArray(reader1 -> GuidPair.fromJson(reader1));
+                    deserializedPageAsset.guids = guids;
+                } else if ("finalIpAddresses".equals(fieldName)) {
+                    List finalIpAddresses
+                        = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.finalIpAddresses = finalIpAddresses;
+                } else if ("asns".equals(fieldName)) {
+                    List asns = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedPageAsset.asns = asns;
+                } else if ("ipBlocks".equals(fieldName)) {
+                    List ipBlocks = reader.readArray(reader1 -> IpBlock.fromJson(reader1));
+                    deserializedPageAsset.ipBlocks = ipBlocks;
+                } else if ("finalAsns".equals(fieldName)) {
+                    List finalAsns = reader.readArray(reader1 -> ObservedLong.fromJson(reader1));
+                    deserializedPageAsset.finalAsns = finalAsns;
+                } else if ("finalIpBlocks".equals(fieldName)) {
+                    List finalIpBlocks = reader.readArray(reader1 -> IpBlock.fromJson(reader1));
+                    deserializedPageAsset.finalIpBlocks = finalIpBlocks;
+                } else if ("responseBodies".equals(fieldName)) {
+                    List responseBodies = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.responseBodies = responseBodies;
+                } else if ("domainAsset".equals(fieldName)) {
+                    deserializedPageAsset.domainAsset = DomainAsset.fromJson(reader);
+                } else if ("rootUrl".equals(fieldName)) {
+                    deserializedPageAsset.rootUrl = ObservedBoolean.fromJson(reader);
+                } else if ("isRootUrl".equals(fieldName)) {
+                    deserializedPageAsset.isRootUrl = reader.getNullable(JsonReader::getBoolean);
+                } else if ("location".equals(fieldName)) {
+                    List location = reader.readArray(reader1 -> ObservedLocation.fromJson(reader1));
+                    deserializedPageAsset.location = location;
+                } else if ("services".equals(fieldName)) {
+                    List services = reader.readArray(reader1 -> Service.fromJson(reader1));
+                    deserializedPageAsset.services = services;
+                } else if ("siteStatus".equals(fieldName)) {
+                    deserializedPageAsset.siteStatus = reader.getString();
+                } else if ("cnames".equals(fieldName)) {
+                    List cnames = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.cnames = cnames;
+                } else if ("cdns".equals(fieldName)) {
+                    List cdns = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedPageAsset.cdns = cdns;
+                } else if ("host".equals(fieldName)) {
+                    deserializedPageAsset.host = reader.getString();
+                } else if ("domain".equals(fieldName)) {
+                    deserializedPageAsset.domain = reader.getString();
+                } else if ("sslServerConfig".equals(fieldName)) {
+                    List sslServerConfig
+                        = reader.readArray(reader1 -> SslServerConfig.fromJson(reader1));
+                    deserializedPageAsset.sslServerConfig = sslServerConfig;
+                } else if ("gdprAssetSecurityPolicies".equals(fieldName)) {
+                    List gdprAssetSecurityPolicies
+                        = reader.readArray(reader1 -> AssetSecurityPolicy.fromJson(reader1));
+                    deserializedPageAsset.gdprAssetSecurityPolicies = gdprAssetSecurityPolicies;
+                } else if ("ipv4".equals(fieldName)) {
+                    List ipv4 = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedPageAsset.ipv4 = ipv4;
+                } else if ("ipv6".equals(fieldName)) {
+                    List ipv6 = reader.readArray(reader1 -> ObservedBoolean.fromJson(reader1));
+                    deserializedPageAsset.ipv6 = ipv6;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedPageAsset;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageAssetRedirectType.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageAssetRedirectType.java
index 721cb1606eb9..88d3700c8f3d 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageAssetRedirectType.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageAssetRedirectType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -54,7 +53,6 @@ public PageAssetRedirectType() {
      * @return the corresponding PageAssetRedirectType.
      */
     @Generated
-    @JsonCreator
     public static PageAssetRedirectType fromString(String name) {
         return fromString(name, PageAssetRedirectType.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageAssetResource.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageAssetResource.java
index d58f7b917de7..bba0cf3ca1f7 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageAssetResource.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageAssetResource.java
@@ -5,16 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 /**
  * The PageAssetResource model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("page")
 @Immutable
 public final class PageAssetResource extends AssetResource {
 
@@ -22,8 +23,7 @@ public final class PageAssetResource extends AssetResource {
      * asset
      */
     @Generated
-    @JsonProperty(value = "asset")
-    private PageAsset asset;
+    private final PageAsset asset;
 
     /**
      * Creates an instance of PageAssetResource class.
@@ -31,8 +31,8 @@ public final class PageAssetResource extends AssetResource {
      * @param asset the asset value to set.
      */
     @Generated
-    @JsonCreator
-    private PageAssetResource(@JsonProperty(value = "asset") PageAsset asset) {
+    private PageAssetResource(PageAsset asset) {
+        setKind("page");
         this.asset = asset;
     }
 
@@ -45,4 +45,112 @@ private PageAssetResource(@JsonProperty(value = "asset") PageAsset asset) {
     public PageAsset getAsset() {
         return this.asset;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeStringField("name", getName());
+        jsonWriter.writeStringField("displayName", getDisplayName());
+        jsonWriter.writeStringField("uuid", getUuid());
+        jsonWriter.writeStringField("createdDate",
+            getCreatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getCreatedDate()));
+        jsonWriter.writeStringField("updatedDate",
+            getUpdatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getUpdatedDate()));
+        jsonWriter.writeStringField("state", getState() == null ? null : getState().toString());
+        jsonWriter.writeStringField("externalId", getExternalId());
+        jsonWriter.writeArrayField("labels", getLabels(), (writer, element) -> writer.writeString(element));
+        jsonWriter.writeBooleanField("wildcard", isWildcard());
+        jsonWriter.writeStringField("discoGroupName", getDiscoGroupName());
+        jsonWriter.writeArrayField("auditTrail", getAuditTrail(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("reason", getReason());
+        jsonWriter.writeJsonField("asset", this.asset);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of PageAssetResource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of PageAssetResource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the PageAssetResource.
+     */
+    @Generated
+    public static PageAssetResource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String kind = "page";
+            String name = null;
+            String displayName = null;
+            String uuid = null;
+            OffsetDateTime createdDate = null;
+            OffsetDateTime updatedDate = null;
+            AssetState state = null;
+            String externalId = null;
+            List labels = null;
+            Boolean wildcard = null;
+            String discoGroupName = null;
+            List auditTrail = null;
+            String reason = null;
+            PageAsset asset = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("uuid".equals(fieldName)) {
+                    uuid = reader.getString();
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("updatedDate".equals(fieldName)) {
+                    updatedDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("state".equals(fieldName)) {
+                    state = AssetState.fromString(reader.getString());
+                } else if ("externalId".equals(fieldName)) {
+                    externalId = reader.getString();
+                } else if ("labels".equals(fieldName)) {
+                    labels = reader.readArray(reader1 -> reader1.getString());
+                } else if ("wildcard".equals(fieldName)) {
+                    wildcard = reader.getNullable(JsonReader::getBoolean);
+                } else if ("discoGroupName".equals(fieldName)) {
+                    discoGroupName = reader.getString();
+                } else if ("auditTrail".equals(fieldName)) {
+                    auditTrail = reader.readArray(reader1 -> AuditTrailItem.fromJson(reader1));
+                } else if ("reason".equals(fieldName)) {
+                    reason = reader.getString();
+                } else if ("asset".equals(fieldName)) {
+                    asset = PageAsset.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            PageAssetResource deserializedPageAssetResource = new PageAssetResource(asset);
+            deserializedPageAssetResource.setId(id);
+            deserializedPageAssetResource.setKind(kind);
+            deserializedPageAssetResource.setName(name);
+            deserializedPageAssetResource.setDisplayName(displayName);
+            deserializedPageAssetResource.setUuid(uuid);
+            deserializedPageAssetResource.setCreatedDate(createdDate);
+            deserializedPageAssetResource.setUpdatedDate(updatedDate);
+            deserializedPageAssetResource.setState(state);
+            deserializedPageAssetResource.setExternalId(externalId);
+            deserializedPageAssetResource.setLabels(labels);
+            deserializedPageAssetResource.setWildcard(wildcard);
+            deserializedPageAssetResource.setDiscoGroupName(discoGroupName);
+            deserializedPageAssetResource.setAuditTrail(auditTrail);
+            deserializedPageAssetResource.setReason(reason);
+            return deserializedPageAssetResource;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageCause.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageCause.java
index 9ebb38da6b48..dac2fbe77427 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageCause.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/PageCause.java
@@ -5,61 +5,58 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The PageCause model.
  */
 @Immutable
-public final class PageCause {
+public final class PageCause implements JsonSerializable {
 
     /*
      * The cause property.
      */
     @Generated
-    @JsonProperty(value = "cause")
     private String cause;
 
     /*
      * The causeElementXPath property.
      */
     @Generated
-    @JsonProperty(value = "causeElementXPath")
     private String causeElementXPath;
 
     /*
      * The location property.
      */
     @Generated
-    @JsonProperty(value = "location")
     private String location;
 
     /*
      * The possibleMatches property.
      */
     @Generated
-    @JsonProperty(value = "possibleMatches")
     private Integer possibleMatches;
 
     /*
      * The loopDetected property.
      */
     @Generated
-    @JsonProperty(value = "loopDetected")
     private Boolean loopDetected;
 
     /*
      * The version property.
      */
     @Generated
-    @JsonProperty(value = "version")
     private Integer version;
 
     /*
      * The domChangeIndex property.
      */
     @Generated
-    @JsonProperty(value = "domChangeIndex")
     private Integer domChangeIndex;
 
     /**
@@ -138,4 +135,57 @@ public Integer getVersion() {
     public Integer getDomChangeIndex() {
         return this.domChangeIndex;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("cause", this.cause);
+        jsonWriter.writeStringField("causeElementXPath", this.causeElementXPath);
+        jsonWriter.writeStringField("location", this.location);
+        jsonWriter.writeNumberField("possibleMatches", this.possibleMatches);
+        jsonWriter.writeBooleanField("loopDetected", this.loopDetected);
+        jsonWriter.writeNumberField("version", this.version);
+        jsonWriter.writeNumberField("domChangeIndex", this.domChangeIndex);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of PageCause from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of PageCause if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the PageCause.
+     */
+    @Generated
+    public static PageCause fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            PageCause deserializedPageCause = new PageCause();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("cause".equals(fieldName)) {
+                    deserializedPageCause.cause = reader.getString();
+                } else if ("causeElementXPath".equals(fieldName)) {
+                    deserializedPageCause.causeElementXPath = reader.getString();
+                } else if ("location".equals(fieldName)) {
+                    deserializedPageCause.location = reader.getString();
+                } else if ("possibleMatches".equals(fieldName)) {
+                    deserializedPageCause.possibleMatches = reader.getNullable(JsonReader::getInt);
+                } else if ("loopDetected".equals(fieldName)) {
+                    deserializedPageCause.loopDetected = reader.getNullable(JsonReader::getBoolean);
+                } else if ("version".equals(fieldName)) {
+                    deserializedPageCause.version = reader.getNullable(JsonReader::getInt);
+                } else if ("domChangeIndex".equals(fieldName)) {
+                    deserializedPageCause.domChangeIndex = reader.getNullable(JsonReader::getInt);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedPageCause;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Port.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Port.java
index 887dec8c7620..6f7ad80fca69 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Port.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Port.java
@@ -5,41 +5,42 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * The Port model.
  */
 @Immutable
-public final class Port {
+public final class Port implements JsonSerializable {
 
     /*
      * The port property.
      */
     @Generated
-    @JsonProperty(value = "port")
     private Integer port;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /**
@@ -88,4 +89,52 @@ public OffsetDateTime getLastSeen() {
     public Long getCount() {
         return this.count;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("port", this.port);
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Port from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Port if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the Port.
+     */
+    @Generated
+    public static Port fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            Port deserializedPort = new Port();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("port".equals(fieldName)) {
+                    deserializedPort.port = reader.getNullable(JsonReader::getInt);
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedPort.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedPort.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedPort.count = reader.getNullable(JsonReader::getLong);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedPort;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSnapshotRequest.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSnapshotRequest.java
index 61440995da06..8ac9df081924 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSnapshotRequest.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSnapshotRequest.java
@@ -5,40 +5,40 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * A request body used to retrieve an asset report snapshot.
  */
 @Fluent
-public final class ReportAssetSnapshotRequest {
+public final class ReportAssetSnapshotRequest implements JsonSerializable {
 
     /*
      * The metric to retrieve a snapshot for.
      */
     @Generated
-    @JsonProperty(value = "metric")
     private String metric;
 
     /*
      * The name of the label to retrieve a snapshot for.
      */
     @Generated
-    @JsonProperty(value = "labelName")
     private String labelName;
 
     /*
      * The number of assets per page.
      */
     @Generated
-    @JsonProperty(value = "size")
     private Integer size;
 
     /*
      * The page to retrieve.
      */
     @Generated
-    @JsonProperty(value = "page")
     private Integer page;
 
     /**
@@ -135,4 +135,48 @@ public ReportAssetSnapshotRequest setPage(Integer page) {
         this.page = page;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("metric", this.metric);
+        jsonWriter.writeStringField("labelName", this.labelName);
+        jsonWriter.writeNumberField("size", this.size);
+        jsonWriter.writeNumberField("page", this.page);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ReportAssetSnapshotRequest from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ReportAssetSnapshotRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ReportAssetSnapshotRequest.
+     */
+    @Generated
+    public static ReportAssetSnapshotRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ReportAssetSnapshotRequest deserializedReportAssetSnapshotRequest = new ReportAssetSnapshotRequest();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("metric".equals(fieldName)) {
+                    deserializedReportAssetSnapshotRequest.metric = reader.getString();
+                } else if ("labelName".equals(fieldName)) {
+                    deserializedReportAssetSnapshotRequest.labelName = reader.getString();
+                } else if ("size".equals(fieldName)) {
+                    deserializedReportAssetSnapshotRequest.size = reader.getNullable(JsonReader::getInt);
+                } else if ("page".equals(fieldName)) {
+                    deserializedReportAssetSnapshotRequest.page = reader.getNullable(JsonReader::getInt);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedReportAssetSnapshotRequest;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSnapshotResult.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSnapshotResult.java
index 065ac3fbcbf4..588a8feaf2a0 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSnapshotResult.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSnapshotResult.java
@@ -5,56 +5,54 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
- * A snapshot of assets captured daily for the provided metric. Asset details only contain primary properties.
- * Detailed asset data can be retrieved from the asset endpoints.
+ * A snapshot of assets captured daily for the provided metric.  Asset details only contain primary properties.  Detailed asset data can be retrieved from the asset endpoints.
  */
 @Immutable
-public final class ReportAssetSnapshotResult {
+public final class ReportAssetSnapshotResult implements JsonSerializable {
 
     /*
      * The name of the metric.
      */
     @Generated
-    @JsonProperty(value = "displayName")
     private String displayName;
 
     /*
      * The unique metric name.
      */
     @Generated
-    @JsonProperty(value = "metric")
     private String metric;
 
     /*
      * The customer label that was filtered on, if one was provided.
      */
     @Generated
-    @JsonProperty(value = "labelName")
     private String labelName;
 
     /*
      * The last time this asset data was updated on this metric.
      */
     @Generated
-    @JsonProperty(value = "updatedAt")
     private OffsetDateTime updatedAt;
 
     /*
      * A description of what the metric represents.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The page of assets that match the provided metric.
      */
     @Generated
-    @JsonProperty(value = "assets")
     private AssetPageResult assets;
 
     /**
@@ -123,4 +121,56 @@ public String getDescription() {
     public AssetPageResult getAssets() {
         return this.assets;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("displayName", this.displayName);
+        jsonWriter.writeStringField("metric", this.metric);
+        jsonWriter.writeStringField("labelName", this.labelName);
+        jsonWriter.writeStringField("updatedAt",
+            this.updatedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.updatedAt));
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeJsonField("assets", this.assets);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ReportAssetSnapshotResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ReportAssetSnapshotResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ReportAssetSnapshotResult.
+     */
+    @Generated
+    public static ReportAssetSnapshotResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ReportAssetSnapshotResult deserializedReportAssetSnapshotResult = new ReportAssetSnapshotResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("displayName".equals(fieldName)) {
+                    deserializedReportAssetSnapshotResult.displayName = reader.getString();
+                } else if ("metric".equals(fieldName)) {
+                    deserializedReportAssetSnapshotResult.metric = reader.getString();
+                } else if ("labelName".equals(fieldName)) {
+                    deserializedReportAssetSnapshotResult.labelName = reader.getString();
+                } else if ("updatedAt".equals(fieldName)) {
+                    deserializedReportAssetSnapshotResult.updatedAt
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("description".equals(fieldName)) {
+                    deserializedReportAssetSnapshotResult.description = reader.getString();
+                } else if ("assets".equals(fieldName)) {
+                    deserializedReportAssetSnapshotResult.assets = AssetPageResult.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedReportAssetSnapshotResult;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSummaryRequest.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSummaryRequest.java
index c2eecbd2e8da..f04b56f57a1a 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSummaryRequest.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSummaryRequest.java
@@ -5,58 +5,53 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
- * A request body used to retrieve summary asset information. One and only one collection of summary identifiers must
- * be provided: filters, metrics, or metricCategories.
+ * A request body used to retrieve summary asset information. One and only one collection of summary identifiers must be provided: filters, metrics, or metricCategories.
  */
 @Fluent
-public final class ReportAssetSummaryRequest {
+public final class ReportAssetSummaryRequest implements JsonSerializable {
 
     /*
      * Categories to retrieve risk reporting data for.
      */
     @Generated
-    @JsonProperty(value = "metricCategories")
     private List metricCategories;
 
     /*
      * Metrics to retrieve risk reporting data for.
      */
     @Generated
-    @JsonProperty(value = "metrics")
     private List metrics;
 
     /*
      * Query filters to apply to the asset summary.
      */
     @Generated
-    @JsonProperty(value = "filters")
     private List filters;
 
     /*
-     * A parameter to group the assets by (first level facet field), only used when the chosen summary identifier is
-     * filters.
+     * A parameter to group the assets by (first level facet field), only used when the chosen summary identifier is filters.
      */
     @Generated
-    @JsonProperty(value = "groupBy")
     private String groupBy;
 
     /*
-     * A parameter to segment the assets by (second level facet field), only used when the chosen summary identifier is
-     * filters.
+     * A parameter to segment the assets by (second level facet field), only used when the chosen summary identifier is filters.
      */
     @Generated
-    @JsonProperty(value = "segmentBy")
     private String segmentBy;
 
     /*
      * Currently unused.
      */
     @Generated
-    @JsonProperty(value = "labelName")
     private String labelName;
 
     /**
@@ -133,8 +128,7 @@ public ReportAssetSummaryRequest setFilters(List filters) {
     }
 
     /**
-     * Get the groupBy property: A parameter to group the assets by (first level facet field), only used when the
-     * chosen summary identifier is filters.
+     * Get the groupBy property: A parameter to group the assets by (first level facet field), only used when the chosen summary identifier is filters.
      *
      * @return the groupBy value.
      */
@@ -144,8 +138,7 @@ public String getGroupBy() {
     }
 
     /**
-     * Set the groupBy property: A parameter to group the assets by (first level facet field), only used when the
-     * chosen summary identifier is filters.
+     * Set the groupBy property: A parameter to group the assets by (first level facet field), only used when the chosen summary identifier is filters.
      *
      * @param groupBy the groupBy value to set.
      * @return the ReportAssetSummaryRequest object itself.
@@ -157,8 +150,7 @@ public ReportAssetSummaryRequest setGroupBy(String groupBy) {
     }
 
     /**
-     * Get the segmentBy property: A parameter to segment the assets by (second level facet field), only used when the
-     * chosen summary identifier is filters.
+     * Get the segmentBy property: A parameter to segment the assets by (second level facet field), only used when the chosen summary identifier is filters.
      *
      * @return the segmentBy value.
      */
@@ -168,8 +160,7 @@ public String getSegmentBy() {
     }
 
     /**
-     * Set the segmentBy property: A parameter to segment the assets by (second level facet field), only used when the
-     * chosen summary identifier is filters.
+     * Set the segmentBy property: A parameter to segment the assets by (second level facet field), only used when the chosen summary identifier is filters.
      *
      * @param segmentBy the segmentBy value to set.
      * @return the ReportAssetSummaryRequest object itself.
@@ -201,4 +192,58 @@ public ReportAssetSummaryRequest setLabelName(String labelName) {
         this.labelName = labelName;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("metricCategories", this.metricCategories,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("metrics", this.metrics, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("filters", this.filters, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("groupBy", this.groupBy);
+        jsonWriter.writeStringField("segmentBy", this.segmentBy);
+        jsonWriter.writeStringField("labelName", this.labelName);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ReportAssetSummaryRequest from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ReportAssetSummaryRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ReportAssetSummaryRequest.
+     */
+    @Generated
+    public static ReportAssetSummaryRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ReportAssetSummaryRequest deserializedReportAssetSummaryRequest = new ReportAssetSummaryRequest();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("metricCategories".equals(fieldName)) {
+                    List metricCategories = reader.readArray(reader1 -> reader1.getString());
+                    deserializedReportAssetSummaryRequest.metricCategories = metricCategories;
+                } else if ("metrics".equals(fieldName)) {
+                    List metrics = reader.readArray(reader1 -> reader1.getString());
+                    deserializedReportAssetSummaryRequest.metrics = metrics;
+                } else if ("filters".equals(fieldName)) {
+                    List filters = reader.readArray(reader1 -> reader1.getString());
+                    deserializedReportAssetSummaryRequest.filters = filters;
+                } else if ("groupBy".equals(fieldName)) {
+                    deserializedReportAssetSummaryRequest.groupBy = reader.getString();
+                } else if ("segmentBy".equals(fieldName)) {
+                    deserializedReportAssetSummaryRequest.segmentBy = reader.getString();
+                } else if ("labelName".equals(fieldName)) {
+                    deserializedReportAssetSummaryRequest.labelName = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedReportAssetSummaryRequest;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSummaryResult.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSummaryResult.java
index 741fc6ada32d..b2cfa4f4a0e3 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSummaryResult.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportAssetSummaryResult.java
@@ -5,20 +5,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The ReportAssetSummaryResult model.
  */
 @Immutable
-public final class ReportAssetSummaryResult {
+public final class ReportAssetSummaryResult implements JsonSerializable {
 
     /*
      * The collection of asset summaries.
      */
     @Generated
-    @JsonProperty(value = "assetSummaries")
     private List assetSummaries;
 
     /**
@@ -37,4 +40,42 @@ private ReportAssetSummaryResult() {
     public List getAssetSummaries() {
         return this.assetSummaries;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("assetSummaries", this.assetSummaries,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ReportAssetSummaryResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ReportAssetSummaryResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ReportAssetSummaryResult.
+     */
+    @Generated
+    public static ReportAssetSummaryResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ReportAssetSummaryResult deserializedReportAssetSummaryResult = new ReportAssetSummaryResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("assetSummaries".equals(fieldName)) {
+                    List assetSummaries
+                        = reader.readArray(reader1 -> AssetSummaryResult.fromJson(reader1));
+                    deserializedReportAssetSummaryResult.assetSummaries = assetSummaries;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedReportAssetSummaryResult;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetBreakdown.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetBreakdown.java
index 2d45a7ad7307..2e5295f5b66e 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetBreakdown.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetBreakdown.java
@@ -5,26 +5,28 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The breakdown of billable asset counts for each asset type.
  */
 @Immutable
-public final class ReportBillableAssetBreakdown {
+public final class ReportBillableAssetBreakdown implements JsonSerializable {
 
     /*
      * The kind of billable asset.
      */
     @Generated
-    @JsonProperty(value = "kind")
     private ReportBillableAssetBreakdownKind kind;
 
     /*
      * The number of assets of this type.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /**
@@ -53,4 +55,43 @@ public ReportBillableAssetBreakdownKind getKind() {
     public Long getCount() {
         return this.count;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString());
+        jsonWriter.writeNumberField("count", this.count);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ReportBillableAssetBreakdown from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ReportBillableAssetBreakdown if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ReportBillableAssetBreakdown.
+     */
+    @Generated
+    public static ReportBillableAssetBreakdown fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ReportBillableAssetBreakdown deserializedReportBillableAssetBreakdown = new ReportBillableAssetBreakdown();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    deserializedReportBillableAssetBreakdown.kind
+                        = ReportBillableAssetBreakdownKind.fromString(reader.getString());
+                } else if ("count".equals(fieldName)) {
+                    deserializedReportBillableAssetBreakdown.count = reader.getNullable(JsonReader::getLong);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedReportBillableAssetBreakdown;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetBreakdownKind.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetBreakdownKind.java
index 55229ae7b785..46dc3b743401 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetBreakdownKind.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetBreakdownKind.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -48,7 +47,6 @@ public ReportBillableAssetBreakdownKind() {
      * @return the corresponding ReportBillableAssetBreakdownKind.
      */
     @Generated
-    @JsonCreator
     public static ReportBillableAssetBreakdownKind fromString(String name) {
         return fromString(name, ReportBillableAssetBreakdownKind.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetSnapshotResult.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetSnapshotResult.java
index 576253258e14..af7a8724bf28 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetSnapshotResult.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetSnapshotResult.java
@@ -5,35 +5,37 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.LocalDate;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * The ReportBillableAssetSnapshotResult model.
  */
 @Immutable
-public final class ReportBillableAssetSnapshotResult {
+public final class ReportBillableAssetSnapshotResult implements JsonSerializable {
 
     /*
      * The date these assets were billed on.
      */
     @Generated
-    @JsonProperty(value = "date")
     private LocalDate date;
 
     /*
      * The total number of billable assets for this date.
      */
     @Generated
-    @JsonProperty(value = "total")
     private Long total;
 
     /*
      * The breakdown of billable asset counts for each asset type.
      */
     @Generated
-    @JsonProperty(value = "assetBreakdown")
     private List assetBreakdown;
 
     /**
@@ -72,4 +74,50 @@ public Long getTotal() {
     public List getAssetBreakdown() {
         return this.assetBreakdown;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("date", Objects.toString(this.date, null));
+        jsonWriter.writeNumberField("total", this.total);
+        jsonWriter.writeArrayField("assetBreakdown", this.assetBreakdown,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ReportBillableAssetSnapshotResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ReportBillableAssetSnapshotResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ReportBillableAssetSnapshotResult.
+     */
+    @Generated
+    public static ReportBillableAssetSnapshotResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ReportBillableAssetSnapshotResult deserializedReportBillableAssetSnapshotResult
+                = new ReportBillableAssetSnapshotResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("date".equals(fieldName)) {
+                    deserializedReportBillableAssetSnapshotResult.date
+                        = reader.getNullable(nonNullReader -> LocalDate.parse(nonNullReader.getString()));
+                } else if ("total".equals(fieldName)) {
+                    deserializedReportBillableAssetSnapshotResult.total = reader.getNullable(JsonReader::getLong);
+                } else if ("assetBreakdown".equals(fieldName)) {
+                    List assetBreakdown
+                        = reader.readArray(reader1 -> ReportBillableAssetBreakdown.fromJson(reader1));
+                    deserializedReportBillableAssetSnapshotResult.assetBreakdown = assetBreakdown;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedReportBillableAssetSnapshotResult;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetSummaryResult.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetSummaryResult.java
index 385bf08ede65..f28e5b8cb62b 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetSummaryResult.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ReportBillableAssetSummaryResult.java
@@ -5,20 +5,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The ReportBillableAssetSummaryResult model.
  */
 @Immutable
-public final class ReportBillableAssetSummaryResult {
+public final class ReportBillableAssetSummaryResult implements JsonSerializable {
 
     /*
      * The assetSummaries property.
      */
     @Generated
-    @JsonProperty(value = "assetSummaries")
     private List assetSummaries;
 
     /**
@@ -37,4 +40,43 @@ private ReportBillableAssetSummaryResult() {
     public List getAssetSummaries() {
         return this.assetSummaries;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("assetSummaries", this.assetSummaries,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ReportBillableAssetSummaryResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ReportBillableAssetSummaryResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ReportBillableAssetSummaryResult.
+     */
+    @Generated
+    public static ReportBillableAssetSummaryResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ReportBillableAssetSummaryResult deserializedReportBillableAssetSummaryResult
+                = new ReportBillableAssetSummaryResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("assetSummaries".equals(fieldName)) {
+                    List assetSummaries
+                        = reader.readArray(reader1 -> ReportBillableAssetSnapshotResult.fromJson(reader1));
+                    deserializedReportBillableAssetSummaryResult.assetSummaries = assetSummaries;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedReportBillableAssetSummaryResult;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Reputation.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Reputation.java
index 7a1c2eb3519f..32d88547cb6f 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Reputation.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Reputation.java
@@ -5,69 +5,66 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * The Reputation model.
  */
 @Immutable
-public final class Reputation {
+public final class Reputation implements JsonSerializable {
 
     /*
      * The listName property.
      */
     @Generated
-    @JsonProperty(value = "listName")
     private String listName;
 
     /*
      * The threatType property.
      */
     @Generated
-    @JsonProperty(value = "threatType")
     private String threatType;
 
     /*
      * The trusted property.
      */
     @Generated
-    @JsonProperty(value = "trusted")
     private Boolean trusted;
 
     /*
      * The cidr property.
      */
     @Generated
-    @JsonProperty(value = "cidr")
     private String cidr;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The listUpdatedAt property.
      */
     @Generated
-    @JsonProperty(value = "listUpdatedAt")
     private OffsetDateTime listUpdatedAt;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /**
@@ -156,4 +153,66 @@ public OffsetDateTime getListUpdatedAt() {
     public Boolean isRecent() {
         return this.recent;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("listName", this.listName);
+        jsonWriter.writeStringField("threatType", this.threatType);
+        jsonWriter.writeBooleanField("trusted", this.trusted);
+        jsonWriter.writeStringField("cidr", this.cidr);
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeStringField("listUpdatedAt",
+            this.listUpdatedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.listUpdatedAt));
+        jsonWriter.writeBooleanField("recent", this.recent);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Reputation from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Reputation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the Reputation.
+     */
+    @Generated
+    public static Reputation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            Reputation deserializedReputation = new Reputation();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("listName".equals(fieldName)) {
+                    deserializedReputation.listName = reader.getString();
+                } else if ("threatType".equals(fieldName)) {
+                    deserializedReputation.threatType = reader.getString();
+                } else if ("trusted".equals(fieldName)) {
+                    deserializedReputation.trusted = reader.getNullable(JsonReader::getBoolean);
+                } else if ("cidr".equals(fieldName)) {
+                    deserializedReputation.cidr = reader.getString();
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedReputation.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedReputation.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("listUpdatedAt".equals(fieldName)) {
+                    deserializedReputation.listUpdatedAt
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("recent".equals(fieldName)) {
+                    deserializedReputation.recent = reader.getNullable(JsonReader::getBoolean);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedReputation;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ResourceUrl.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ResourceUrl.java
index f5a19a5f77f3..0132fb6ecee3 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ResourceUrl.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ResourceUrl.java
@@ -5,56 +5,55 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The ResourceUrl model.
  */
 @Immutable
-public final class ResourceUrl {
+public final class ResourceUrl implements JsonSerializable {
 
     /*
      * The url property.
      */
     @Generated
-    @JsonProperty(value = "url")
     private String url;
 
     /*
      * The resources property.
      */
     @Generated
-    @JsonProperty(value = "resources")
     private List resources;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /**
@@ -123,4 +122,60 @@ public Long getCount() {
     public Boolean isRecent() {
         return this.recent;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("url", this.url);
+        jsonWriter.writeArrayField("resources", this.resources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeBooleanField("recent", this.recent);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ResourceUrl from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ResourceUrl if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ResourceUrl.
+     */
+    @Generated
+    public static ResourceUrl fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ResourceUrl deserializedResourceUrl = new ResourceUrl();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("url".equals(fieldName)) {
+                    deserializedResourceUrl.url = reader.getString();
+                } else if ("resources".equals(fieldName)) {
+                    List resources
+                        = reader.readArray(reader1 -> DependentResource.fromJson(reader1));
+                    deserializedResourceUrl.resources = resources;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedResourceUrl.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedResourceUrl.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedResourceUrl.count = reader.getNullable(JsonReader::getLong);
+                } else if ("recent".equals(fieldName)) {
+                    deserializedResourceUrl.recent = reader.getNullable(JsonReader::getBoolean);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedResourceUrl;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SavedFilter.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SavedFilter.java
index a0e6a7024668..ebd80ce584f8 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SavedFilter.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SavedFilter.java
@@ -5,47 +5,46 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The SavedFilter model.
  */
 @Immutable
-public final class SavedFilter {
+public final class SavedFilter implements JsonSerializable {
 
     /*
      * The system generated unique id for the resource.
      */
     @Generated
-    @JsonProperty(value = "id")
     private String id;
 
     /*
      * The caller provided unique name for the resource.
      */
     @Generated
-    @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
     private String name;
 
     /*
      * The name that can be used for display purposes.
      */
     @Generated
-    @JsonProperty(value = "displayName")
     private String displayName;
 
     /*
      * The filter property.
      */
     @Generated
-    @JsonProperty(value = "filter")
     private String filter;
 
     /*
      * The description property.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /**
@@ -104,4 +103,61 @@ public String getFilter() {
     public String getDescription() {
         return this.description;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("displayName", this.displayName);
+        jsonWriter.writeStringField("filter", this.filter);
+        jsonWriter.writeStringField("description", this.description);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SavedFilter from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SavedFilter if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the SavedFilter.
+     */
+    @Generated
+    public static SavedFilter fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String name = null;
+            String id = null;
+            String displayName = null;
+            String filter = null;
+            String description = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("filter".equals(fieldName)) {
+                    filter = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            SavedFilter deserializedSavedFilter = new SavedFilter();
+            deserializedSavedFilter.name = name;
+            deserializedSavedFilter.id = id;
+            deserializedSavedFilter.displayName = displayName;
+            deserializedSavedFilter.filter = filter;
+            deserializedSavedFilter.description = description;
+            return deserializedSavedFilter;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SavedFilterData.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SavedFilterData.java
index f6b93139db67..364b58265d4f 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SavedFilterData.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SavedFilterData.java
@@ -5,28 +5,29 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * A request body used to create a saved filter.
  */
 @Immutable
-public final class SavedFilterData {
+public final class SavedFilterData implements JsonSerializable {
 
     /*
      * An expression on the resource type that selects the resources to be returned.
      */
     @Generated
-    @JsonProperty(value = "filter")
-    private String filter;
+    private final String filter;
 
     /*
      * A human readable description of the saved filter.
      */
     @Generated
-    @JsonProperty(value = "description")
-    private String description;
+    private final String description;
 
     /**
      * Creates an instance of SavedFilterData class.
@@ -35,9 +36,7 @@ public final class SavedFilterData {
      * @param description the description value to set.
      */
     @Generated
-    @JsonCreator
-    public SavedFilterData(@JsonProperty(value = "filter") String filter,
-        @JsonProperty(value = "description") String description) {
+    public SavedFilterData(String filter, String description) {
         this.filter = filter;
         this.description = description;
     }
@@ -61,4 +60,44 @@ public String getFilter() {
     public String getDescription() {
         return this.description;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("filter", this.filter);
+        jsonWriter.writeStringField("description", this.description);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SavedFilterData from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SavedFilterData if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the SavedFilterData.
+     */
+    @Generated
+    public static SavedFilterData fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String filter = null;
+            String description = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("filter".equals(fieldName)) {
+                    filter = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new SavedFilterData(filter, description);
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ScanMetadata.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ScanMetadata.java
index fc511abe3aff..8161937f5be0 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ScanMetadata.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ScanMetadata.java
@@ -5,41 +5,42 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * The ScanMetadata model.
  */
 @Immutable
-public final class ScanMetadata {
+public final class ScanMetadata implements JsonSerializable {
 
     /*
      * The port property.
      */
     @Generated
-    @JsonProperty(value = "port")
     private Integer port;
 
     /*
      * The bannerMetadata property.
      */
     @Generated
-    @JsonProperty(value = "bannerMetadata")
     private String bannerMetadata;
 
     /*
      * The startScan property.
      */
     @Generated
-    @JsonProperty(value = "startScan")
     private OffsetDateTime startScan;
 
     /*
      * The endScan property.
      */
     @Generated
-    @JsonProperty(value = "endScan")
     private OffsetDateTime endScan;
 
     /**
@@ -88,4 +89,52 @@ public OffsetDateTime getStartScan() {
     public OffsetDateTime getEndScan() {
         return this.endScan;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("port", this.port);
+        jsonWriter.writeStringField("bannerMetadata", this.bannerMetadata);
+        jsonWriter.writeStringField("startScan",
+            this.startScan == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.startScan));
+        jsonWriter.writeStringField("endScan",
+            this.endScan == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.endScan));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ScanMetadata from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ScanMetadata if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ScanMetadata.
+     */
+    @Generated
+    public static ScanMetadata fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ScanMetadata deserializedScanMetadata = new ScanMetadata();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("port".equals(fieldName)) {
+                    deserializedScanMetadata.port = reader.getNullable(JsonReader::getInt);
+                } else if ("bannerMetadata".equals(fieldName)) {
+                    deserializedScanMetadata.bannerMetadata = reader.getString();
+                } else if ("startScan".equals(fieldName)) {
+                    deserializedScanMetadata.startScan
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("endScan".equals(fieldName)) {
+                    deserializedScanMetadata.endScan
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedScanMetadata;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Service.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Service.java
index f545fdea9168..b49b2a05e087 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Service.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Service.java
@@ -5,91 +5,85 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The Service model.
  */
 @Immutable
-public final class Service {
+public final class Service implements JsonSerializable {
 
     /*
      * The scheme property.
      */
     @Generated
-    @JsonProperty(value = "scheme")
     private String scheme;
 
     /*
      * The port property.
      */
     @Generated
-    @JsonProperty(value = "port")
     private Integer port;
 
     /*
      * The webComponents property.
      */
     @Generated
-    @JsonProperty(value = "webComponents")
     private List webComponents;
 
     /*
      * The sslCerts property.
      */
     @Generated
-    @JsonProperty(value = "sslCerts")
     private List sslCerts;
 
     /*
      * The exceptions property.
      */
     @Generated
-    @JsonProperty(value = "exceptions")
     private List exceptions;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /*
      * The portStates property.
      */
     @Generated
-    @JsonProperty(value = "portStates")
     private List portStates;
 
     /**
@@ -208,4 +202,79 @@ public Boolean isRecent() {
     public List getPortStates() {
         return this.portStates;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("scheme", this.scheme);
+        jsonWriter.writeNumberField("port", this.port);
+        jsonWriter.writeArrayField("webComponents", this.webComponents, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sslCerts", this.sslCerts, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("exceptions", this.exceptions, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeBooleanField("recent", this.recent);
+        jsonWriter.writeArrayField("portStates", this.portStates, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Service from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Service if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the Service.
+     */
+    @Generated
+    public static Service fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            Service deserializedService = new Service();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("scheme".equals(fieldName)) {
+                    deserializedService.scheme = reader.getString();
+                } else if ("port".equals(fieldName)) {
+                    deserializedService.port = reader.getNullable(JsonReader::getInt);
+                } else if ("webComponents".equals(fieldName)) {
+                    List webComponents = reader.readArray(reader1 -> WebComponent.fromJson(reader1));
+                    deserializedService.webComponents = webComponents;
+                } else if ("sslCerts".equals(fieldName)) {
+                    List sslCerts = reader.readArray(reader1 -> SslCertAsset.fromJson(reader1));
+                    deserializedService.sslCerts = sslCerts;
+                } else if ("exceptions".equals(fieldName)) {
+                    List exceptions = reader.readArray(reader1 -> ObservedString.fromJson(reader1));
+                    deserializedService.exceptions = exceptions;
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedService.sources = sources;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedService.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedService.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedService.count = reader.getNullable(JsonReader::getLong);
+                } else if ("recent".equals(fieldName)) {
+                    deserializedService.recent = reader.getNullable(JsonReader::getBoolean);
+                } else if ("portStates".equals(fieldName)) {
+                    List portStates
+                        = reader.readArray(reader1 -> ObservedPortState.fromJson(reader1));
+                    deserializedService.portStates = portStates;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedService;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SoaRecord.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SoaRecord.java
index 495d426be3e6..5c01e4d39595 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SoaRecord.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SoaRecord.java
@@ -5,62 +5,60 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * The SoaRecord model.
  */
 @Immutable
-public final class SoaRecord {
+public final class SoaRecord implements JsonSerializable {
 
     /*
      * The nameServer property.
      */
     @Generated
-    @JsonProperty(value = "nameServer")
     private String nameServer;
 
     /*
      * The email property.
      */
     @Generated
-    @JsonProperty(value = "email")
     private String email;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The serialNumber property.
      */
     @Generated
-    @JsonProperty(value = "serialNumber")
     private Long serialNumber;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /**
@@ -139,4 +137,61 @@ public Long getSerialNumber() {
     public Boolean isRecent() {
         return this.recent;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("nameServer", this.nameServer);
+        jsonWriter.writeStringField("email", this.email);
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeNumberField("serialNumber", this.serialNumber);
+        jsonWriter.writeBooleanField("recent", this.recent);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SoaRecord from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SoaRecord if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SoaRecord.
+     */
+    @Generated
+    public static SoaRecord fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SoaRecord deserializedSoaRecord = new SoaRecord();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("nameServer".equals(fieldName)) {
+                    deserializedSoaRecord.nameServer = reader.getString();
+                } else if ("email".equals(fieldName)) {
+                    deserializedSoaRecord.email = reader.getString();
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedSoaRecord.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedSoaRecord.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedSoaRecord.count = reader.getNullable(JsonReader::getLong);
+                } else if ("serialNumber".equals(fieldName)) {
+                    deserializedSoaRecord.serialNumber = reader.getNullable(JsonReader::getLong);
+                } else if ("recent".equals(fieldName)) {
+                    deserializedSoaRecord.recent = reader.getNullable(JsonReader::getBoolean);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedSoaRecord;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Source.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Source.java
index 017c05a3a6d1..22246dfa1c9e 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Source.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Source.java
@@ -5,48 +5,48 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * The Source model.
  */
 @Immutable
-public final class Source {
+public final class Source implements JsonSerializable {
 
     /*
      * The source property.
      */
     @Generated
-    @JsonProperty(value = "source")
     private String source;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The reason property.
      */
     @Generated
-    @JsonProperty(value = "reason")
     private String reason;
 
     /**
@@ -105,4 +105,55 @@ public Long getCount() {
     public String getReason() {
         return this.reason;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("source", this.source);
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeStringField("reason", this.reason);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Source from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Source if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the Source.
+     */
+    @Generated
+    public static Source fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            Source deserializedSource = new Source();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("source".equals(fieldName)) {
+                    deserializedSource.source = reader.getString();
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedSource.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedSource.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedSource.count = reader.getNullable(JsonReader::getLong);
+                } else if ("reason".equals(fieldName)) {
+                    deserializedSource.reason = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedSource;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslCertAsset.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslCertAsset.java
index 6af69ffcd8d0..8930b0120e75 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslCertAsset.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslCertAsset.java
@@ -5,8 +5,12 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -19,231 +23,198 @@ public final class SslCertAsset extends InventoryAsset {
      * The sha1 property.
      */
     @Generated
-    @JsonProperty(value = "sha1")
     private String sha1;
 
     /*
      * The subjectCommonNames property.
      */
     @Generated
-    @JsonProperty(value = "subjectCommonNames")
     private List subjectCommonNames;
 
     /*
      * The organizations property.
      */
     @Generated
-    @JsonProperty(value = "organizations")
     private List organizations;
 
     /*
      * The organizationalUnits property.
      */
     @Generated
-    @JsonProperty(value = "organizationalUnits")
     private List organizationalUnits;
 
     /*
      * The issuerCommonNames property.
      */
     @Generated
-    @JsonProperty(value = "issuerCommonNames")
     private List issuerCommonNames;
 
     /*
      * The sigAlgName property.
      */
     @Generated
-    @JsonProperty(value = "sigAlgName")
     private String sigAlgName;
 
     /*
      * The invalidAfter property.
      */
     @Generated
-    @JsonProperty(value = "invalidAfter")
     private OffsetDateTime invalidAfter;
 
     /*
      * The serialNumber property.
      */
     @Generated
-    @JsonProperty(value = "serialNumber")
     private String serialNumber;
 
     /*
      * The subjectAlternativeNames property.
      */
     @Generated
-    @JsonProperty(value = "subjectAlternativeNames")
     private List subjectAlternativeNames;
 
     /*
      * The issuerAlternativeNames property.
      */
     @Generated
-    @JsonProperty(value = "issuerAlternativeNames")
     private List issuerAlternativeNames;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The invalidBefore property.
      */
     @Generated
-    @JsonProperty(value = "invalidBefore")
     private OffsetDateTime invalidBefore;
 
     /*
      * The keySize property.
      */
     @Generated
-    @JsonProperty(value = "keySize")
     private Integer keySize;
 
     /*
      * The keyAlgorithm property.
      */
     @Generated
-    @JsonProperty(value = "keyAlgorithm")
     private String keyAlgorithm;
 
     /*
      * The subjectLocality property.
      */
     @Generated
-    @JsonProperty(value = "subjectLocality")
     private List subjectLocality;
 
     /*
      * The subjectState property.
      */
     @Generated
-    @JsonProperty(value = "subjectState")
     private List subjectState;
 
     /*
      * The subjectCountry property.
      */
     @Generated
-    @JsonProperty(value = "subjectCountry")
     private List subjectCountry;
 
     /*
      * The issuerLocality property.
      */
     @Generated
-    @JsonProperty(value = "issuerLocality")
     private List issuerLocality;
 
     /*
      * The issuerState property.
      */
     @Generated
-    @JsonProperty(value = "issuerState")
     private List issuerState;
 
     /*
      * The issuerCountry property.
      */
     @Generated
-    @JsonProperty(value = "issuerCountry")
     private List issuerCountry;
 
     /*
      * The subjectOrganizations property.
      */
     @Generated
-    @JsonProperty(value = "subjectOrganizations")
     private List subjectOrganizations;
 
     /*
      * The subjectOrganizationalUnits property.
      */
     @Generated
-    @JsonProperty(value = "subjectOrganizationalUnits")
     private List subjectOrganizationalUnits;
 
     /*
      * The issuerOrganizations property.
      */
     @Generated
-    @JsonProperty(value = "issuerOrganizations")
     private List issuerOrganizations;
 
     /*
      * The issuerOrganizationalUnits property.
      */
     @Generated
-    @JsonProperty(value = "issuerOrganizationalUnits")
     private List issuerOrganizationalUnits;
 
     /*
      * The version property.
      */
     @Generated
-    @JsonProperty(value = "version")
     private Integer version;
 
     /*
      * The certificateAuthority property.
      */
     @Generated
-    @JsonProperty(value = "certificateAuthority")
     private Boolean certificateAuthority;
 
     /*
      * The selfSigned property.
      */
     @Generated
-    @JsonProperty(value = "selfSigned")
     private Boolean selfSigned;
 
     /*
      * The sigAlgOid property.
      */
     @Generated
-    @JsonProperty(value = "sigAlgOid")
     private String sigAlgOid;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /*
      * The validationType property.
      */
     @Generated
-    @JsonProperty(value = "validationType")
     private SslCertAssetValidationType validationType;
 
     /**
@@ -582,4 +553,175 @@ public Boolean isRecent() {
     public SslCertAssetValidationType getValidationType() {
         return this.validationType;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("sha1", this.sha1);
+        jsonWriter.writeArrayField("subjectCommonNames", this.subjectCommonNames,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("organizations", this.organizations,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("organizationalUnits", this.organizationalUnits,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("issuerCommonNames", this.issuerCommonNames,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("sigAlgName", this.sigAlgName);
+        jsonWriter.writeStringField("invalidAfter",
+            this.invalidAfter == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.invalidAfter));
+        jsonWriter.writeStringField("serialNumber", this.serialNumber);
+        jsonWriter.writeArrayField("subjectAlternativeNames", this.subjectAlternativeNames,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("issuerAlternativeNames", this.issuerAlternativeNames,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeStringField("invalidBefore",
+            this.invalidBefore == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.invalidBefore));
+        jsonWriter.writeNumberField("keySize", this.keySize);
+        jsonWriter.writeStringField("keyAlgorithm", this.keyAlgorithm);
+        jsonWriter.writeArrayField("subjectLocality", this.subjectLocality,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("subjectState", this.subjectState, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("subjectCountry", this.subjectCountry,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("issuerLocality", this.issuerLocality,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("issuerState", this.issuerState, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("issuerCountry", this.issuerCountry,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("subjectOrganizations", this.subjectOrganizations,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("subjectOrganizationalUnits", this.subjectOrganizationalUnits,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("issuerOrganizations", this.issuerOrganizations,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("issuerOrganizationalUnits", this.issuerOrganizationalUnits,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeNumberField("version", this.version);
+        jsonWriter.writeBooleanField("certificateAuthority", this.certificateAuthority);
+        jsonWriter.writeBooleanField("selfSigned", this.selfSigned);
+        jsonWriter.writeStringField("sigAlgOid", this.sigAlgOid);
+        jsonWriter.writeBooleanField("recent", this.recent);
+        jsonWriter.writeStringField("validationType",
+            this.validationType == null ? null : this.validationType.toString());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SslCertAsset from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SslCertAsset if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SslCertAsset.
+     */
+    @Generated
+    public static SslCertAsset fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SslCertAsset deserializedSslCertAsset = new SslCertAsset();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("sha1".equals(fieldName)) {
+                    deserializedSslCertAsset.sha1 = reader.getString();
+                } else if ("subjectCommonNames".equals(fieldName)) {
+                    List subjectCommonNames = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.subjectCommonNames = subjectCommonNames;
+                } else if ("organizations".equals(fieldName)) {
+                    List organizations = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.organizations = organizations;
+                } else if ("organizationalUnits".equals(fieldName)) {
+                    List organizationalUnits = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.organizationalUnits = organizationalUnits;
+                } else if ("issuerCommonNames".equals(fieldName)) {
+                    List issuerCommonNames = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.issuerCommonNames = issuerCommonNames;
+                } else if ("sigAlgName".equals(fieldName)) {
+                    deserializedSslCertAsset.sigAlgName = reader.getString();
+                } else if ("invalidAfter".equals(fieldName)) {
+                    deserializedSslCertAsset.invalidAfter
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("serialNumber".equals(fieldName)) {
+                    deserializedSslCertAsset.serialNumber = reader.getString();
+                } else if ("subjectAlternativeNames".equals(fieldName)) {
+                    List subjectAlternativeNames = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.subjectAlternativeNames = subjectAlternativeNames;
+                } else if ("issuerAlternativeNames".equals(fieldName)) {
+                    List issuerAlternativeNames = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.issuerAlternativeNames = issuerAlternativeNames;
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedSslCertAsset.sources = sources;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedSslCertAsset.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedSslCertAsset.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedSslCertAsset.count = reader.getNullable(JsonReader::getLong);
+                } else if ("invalidBefore".equals(fieldName)) {
+                    deserializedSslCertAsset.invalidBefore
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("keySize".equals(fieldName)) {
+                    deserializedSslCertAsset.keySize = reader.getNullable(JsonReader::getInt);
+                } else if ("keyAlgorithm".equals(fieldName)) {
+                    deserializedSslCertAsset.keyAlgorithm = reader.getString();
+                } else if ("subjectLocality".equals(fieldName)) {
+                    List subjectLocality = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.subjectLocality = subjectLocality;
+                } else if ("subjectState".equals(fieldName)) {
+                    List subjectState = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.subjectState = subjectState;
+                } else if ("subjectCountry".equals(fieldName)) {
+                    List subjectCountry = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.subjectCountry = subjectCountry;
+                } else if ("issuerLocality".equals(fieldName)) {
+                    List issuerLocality = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.issuerLocality = issuerLocality;
+                } else if ("issuerState".equals(fieldName)) {
+                    List issuerState = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.issuerState = issuerState;
+                } else if ("issuerCountry".equals(fieldName)) {
+                    List issuerCountry = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.issuerCountry = issuerCountry;
+                } else if ("subjectOrganizations".equals(fieldName)) {
+                    List subjectOrganizations = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.subjectOrganizations = subjectOrganizations;
+                } else if ("subjectOrganizationalUnits".equals(fieldName)) {
+                    List subjectOrganizationalUnits = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.subjectOrganizationalUnits = subjectOrganizationalUnits;
+                } else if ("issuerOrganizations".equals(fieldName)) {
+                    List issuerOrganizations = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.issuerOrganizations = issuerOrganizations;
+                } else if ("issuerOrganizationalUnits".equals(fieldName)) {
+                    List issuerOrganizationalUnits = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslCertAsset.issuerOrganizationalUnits = issuerOrganizationalUnits;
+                } else if ("version".equals(fieldName)) {
+                    deserializedSslCertAsset.version = reader.getNullable(JsonReader::getInt);
+                } else if ("certificateAuthority".equals(fieldName)) {
+                    deserializedSslCertAsset.certificateAuthority = reader.getNullable(JsonReader::getBoolean);
+                } else if ("selfSigned".equals(fieldName)) {
+                    deserializedSslCertAsset.selfSigned = reader.getNullable(JsonReader::getBoolean);
+                } else if ("sigAlgOid".equals(fieldName)) {
+                    deserializedSslCertAsset.sigAlgOid = reader.getString();
+                } else if ("recent".equals(fieldName)) {
+                    deserializedSslCertAsset.recent = reader.getNullable(JsonReader::getBoolean);
+                } else if ("validationType".equals(fieldName)) {
+                    deserializedSslCertAsset.validationType = SslCertAssetValidationType.fromString(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedSslCertAsset;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslCertAssetResource.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslCertAssetResource.java
index 6b5fe624b3a5..082061383095 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslCertAssetResource.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslCertAssetResource.java
@@ -5,16 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 /**
  * The SslCertAssetResource model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("sslCert")
 @Immutable
 public final class SslCertAssetResource extends AssetResource {
 
@@ -22,8 +23,7 @@ public final class SslCertAssetResource extends AssetResource {
      * asset
      */
     @Generated
-    @JsonProperty(value = "asset")
-    private SslCertAsset asset;
+    private final SslCertAsset asset;
 
     /**
      * Creates an instance of SslCertAssetResource class.
@@ -31,8 +31,8 @@ public final class SslCertAssetResource extends AssetResource {
      * @param asset the asset value to set.
      */
     @Generated
-    @JsonCreator
-    private SslCertAssetResource(@JsonProperty(value = "asset") SslCertAsset asset) {
+    private SslCertAssetResource(SslCertAsset asset) {
+        setKind("sslCert");
         this.asset = asset;
     }
 
@@ -45,4 +45,112 @@ private SslCertAssetResource(@JsonProperty(value = "asset") SslCertAsset asset)
     public SslCertAsset getAsset() {
         return this.asset;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeStringField("name", getName());
+        jsonWriter.writeStringField("displayName", getDisplayName());
+        jsonWriter.writeStringField("uuid", getUuid());
+        jsonWriter.writeStringField("createdDate",
+            getCreatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getCreatedDate()));
+        jsonWriter.writeStringField("updatedDate",
+            getUpdatedDate() == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(getUpdatedDate()));
+        jsonWriter.writeStringField("state", getState() == null ? null : getState().toString());
+        jsonWriter.writeStringField("externalId", getExternalId());
+        jsonWriter.writeArrayField("labels", getLabels(), (writer, element) -> writer.writeString(element));
+        jsonWriter.writeBooleanField("wildcard", isWildcard());
+        jsonWriter.writeStringField("discoGroupName", getDiscoGroupName());
+        jsonWriter.writeArrayField("auditTrail", getAuditTrail(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("reason", getReason());
+        jsonWriter.writeJsonField("asset", this.asset);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SslCertAssetResource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SslCertAssetResource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the SslCertAssetResource.
+     */
+    @Generated
+    public static SslCertAssetResource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String kind = "sslCert";
+            String name = null;
+            String displayName = null;
+            String uuid = null;
+            OffsetDateTime createdDate = null;
+            OffsetDateTime updatedDate = null;
+            AssetState state = null;
+            String externalId = null;
+            List labels = null;
+            Boolean wildcard = null;
+            String discoGroupName = null;
+            List auditTrail = null;
+            String reason = null;
+            SslCertAsset asset = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("displayName".equals(fieldName)) {
+                    displayName = reader.getString();
+                } else if ("uuid".equals(fieldName)) {
+                    uuid = reader.getString();
+                } else if ("createdDate".equals(fieldName)) {
+                    createdDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("updatedDate".equals(fieldName)) {
+                    updatedDate = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("state".equals(fieldName)) {
+                    state = AssetState.fromString(reader.getString());
+                } else if ("externalId".equals(fieldName)) {
+                    externalId = reader.getString();
+                } else if ("labels".equals(fieldName)) {
+                    labels = reader.readArray(reader1 -> reader1.getString());
+                } else if ("wildcard".equals(fieldName)) {
+                    wildcard = reader.getNullable(JsonReader::getBoolean);
+                } else if ("discoGroupName".equals(fieldName)) {
+                    discoGroupName = reader.getString();
+                } else if ("auditTrail".equals(fieldName)) {
+                    auditTrail = reader.readArray(reader1 -> AuditTrailItem.fromJson(reader1));
+                } else if ("reason".equals(fieldName)) {
+                    reason = reader.getString();
+                } else if ("asset".equals(fieldName)) {
+                    asset = SslCertAsset.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            SslCertAssetResource deserializedSslCertAssetResource = new SslCertAssetResource(asset);
+            deserializedSslCertAssetResource.setId(id);
+            deserializedSslCertAssetResource.setKind(kind);
+            deserializedSslCertAssetResource.setName(name);
+            deserializedSslCertAssetResource.setDisplayName(displayName);
+            deserializedSslCertAssetResource.setUuid(uuid);
+            deserializedSslCertAssetResource.setCreatedDate(createdDate);
+            deserializedSslCertAssetResource.setUpdatedDate(updatedDate);
+            deserializedSslCertAssetResource.setState(state);
+            deserializedSslCertAssetResource.setExternalId(externalId);
+            deserializedSslCertAssetResource.setLabels(labels);
+            deserializedSslCertAssetResource.setWildcard(wildcard);
+            deserializedSslCertAssetResource.setDiscoGroupName(discoGroupName);
+            deserializedSslCertAssetResource.setAuditTrail(auditTrail);
+            deserializedSslCertAssetResource.setReason(reason);
+            return deserializedSslCertAssetResource;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslCertAssetValidationType.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslCertAssetValidationType.java
index 036d92554a38..cd6d35ac852e 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslCertAssetValidationType.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslCertAssetValidationType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -48,7 +47,6 @@ public SslCertAssetValidationType() {
      * @return the corresponding SslCertAssetValidationType.
      */
     @Generated
-    @JsonCreator
     public static SslCertAssetValidationType fromString(String name) {
         return fromString(name, SslCertAssetValidationType.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslServerConfig.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslServerConfig.java
index be22285e63a1..906a42b0cd2a 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslServerConfig.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SslServerConfig.java
@@ -5,56 +5,55 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The SslServerConfig model.
  */
 @Immutable
-public final class SslServerConfig {
+public final class SslServerConfig implements JsonSerializable {
 
     /*
      * The tlsVersions property.
      */
     @Generated
-    @JsonProperty(value = "tlsVersions")
     private List tlsVersions;
 
     /*
      * The cipherSuites property.
      */
     @Generated
-    @JsonProperty(value = "cipherSuites")
     private List cipherSuites;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /**
@@ -123,4 +122,61 @@ public Long getCount() {
     public List getSources() {
         return this.sources;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("tlsVersions", this.tlsVersions, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("cipherSuites", this.cipherSuites, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SslServerConfig from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SslServerConfig if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SslServerConfig.
+     */
+    @Generated
+    public static SslServerConfig fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SslServerConfig deserializedSslServerConfig = new SslServerConfig();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("tlsVersions".equals(fieldName)) {
+                    List tlsVersions = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslServerConfig.tlsVersions = tlsVersions;
+                } else if ("cipherSuites".equals(fieldName)) {
+                    List cipherSuites = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSslServerConfig.cipherSuites = cipherSuites;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedSslServerConfig.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedSslServerConfig.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedSslServerConfig.count = reader.getNullable(JsonReader::getLong);
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedSslServerConfig.sources = sources;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedSslServerConfig;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SubResourceIntegrityCheck.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SubResourceIntegrityCheck.java
index eb4a4eee6269..ed6fd1117c7f 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SubResourceIntegrityCheck.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/SubResourceIntegrityCheck.java
@@ -5,76 +5,72 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * The SubResourceIntegrityCheck model.
  */
 @Immutable
-public final class SubResourceIntegrityCheck {
+public final class SubResourceIntegrityCheck implements JsonSerializable {
 
     /*
      * The violation property.
      */
     @Generated
-    @JsonProperty(value = "violation")
     private Boolean violation;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The causePageUrl property.
      */
     @Generated
-    @JsonProperty(value = "causePageUrl")
     private String causePageUrl;
 
     /*
      * The crawlGuid property.
      */
     @Generated
-    @JsonProperty(value = "crawlGuid")
     private String crawlGuid;
 
     /*
      * The pageGuid property.
      */
     @Generated
-    @JsonProperty(value = "pageGuid")
     private String pageGuid;
 
     /*
      * The resourceGuid property.
      */
     @Generated
-    @JsonProperty(value = "resourceGuid")
     private String resourceGuid;
 
     /*
      * The expectedHash property.
      */
     @Generated
-    @JsonProperty(value = "expectedHash")
     private String expectedHash;
 
     /**
@@ -173,4 +169,67 @@ public String getResourceGuid() {
     public String getExpectedHash() {
         return this.expectedHash;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeBooleanField("violation", this.violation);
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeStringField("causePageUrl", this.causePageUrl);
+        jsonWriter.writeStringField("crawlGuid", this.crawlGuid);
+        jsonWriter.writeStringField("pageGuid", this.pageGuid);
+        jsonWriter.writeStringField("resourceGuid", this.resourceGuid);
+        jsonWriter.writeStringField("expectedHash", this.expectedHash);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SubResourceIntegrityCheck from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SubResourceIntegrityCheck if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SubResourceIntegrityCheck.
+     */
+    @Generated
+    public static SubResourceIntegrityCheck fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SubResourceIntegrityCheck deserializedSubResourceIntegrityCheck = new SubResourceIntegrityCheck();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("violation".equals(fieldName)) {
+                    deserializedSubResourceIntegrityCheck.violation = reader.getNullable(JsonReader::getBoolean);
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedSubResourceIntegrityCheck.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedSubResourceIntegrityCheck.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedSubResourceIntegrityCheck.count = reader.getNullable(JsonReader::getLong);
+                } else if ("causePageUrl".equals(fieldName)) {
+                    deserializedSubResourceIntegrityCheck.causePageUrl = reader.getString();
+                } else if ("crawlGuid".equals(fieldName)) {
+                    deserializedSubResourceIntegrityCheck.crawlGuid = reader.getString();
+                } else if ("pageGuid".equals(fieldName)) {
+                    deserializedSubResourceIntegrityCheck.pageGuid = reader.getString();
+                } else if ("resourceGuid".equals(fieldName)) {
+                    deserializedSubResourceIntegrityCheck.resourceGuid = reader.getString();
+                } else if ("expectedHash".equals(fieldName)) {
+                    deserializedSubResourceIntegrityCheck.expectedHash = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedSubResourceIntegrityCheck;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Task.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Task.java
index 997c8ac9d655..4c92fe0af469 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Task.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/Task.java
@@ -5,70 +5,67 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Map;
 
 /**
  * The Task model.
  */
 @Immutable
-public final class Task {
+public final class Task implements JsonSerializable {
 
     /*
      * The unique identifier of the task.
      */
     @Generated
-    @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY)
     private String id;
 
     /*
      * The time the task started.
      */
     @Generated
-    @JsonProperty(value = "startedAt")
     private OffsetDateTime startedAt;
 
     /*
      * The time the task completed.
      */
     @Generated
-    @JsonProperty(value = "completedAt")
     private OffsetDateTime completedAt;
 
     /*
      * The last time the status of the task was updated.
      */
     @Generated
-    @JsonProperty(value = "lastPolledAt")
     private OffsetDateTime lastPolledAt;
 
     /*
      * The state the task is in.
      */
     @Generated
-    @JsonProperty(value = "state")
     private TaskState state;
 
     /*
      * The phase the task is in.
      */
     @Generated
-    @JsonProperty(value = "phase")
     private TaskPhase phase;
 
     /*
      * The reason the task was moved into its current state, if the task wasn't completed.
      */
     @Generated
-    @JsonProperty(value = "reason")
     private String reason;
 
     /*
-     * Attributes unique to the task. This differs by task type.
+     * Attributes unique to the task.  This differs by task type.
      */
     @Generated
-    @JsonProperty(value = "metadata")
     private Map metadata;
 
     /**
@@ -149,7 +146,7 @@ public String getReason() {
     }
 
     /**
-     * Get the metadata property: Attributes unique to the task. This differs by task type.
+     * Get the metadata property: Attributes unique to the task.  This differs by task type.
      *
      * @return the metadata value.
      */
@@ -157,4 +154,79 @@ public String getReason() {
     public Map getMetadata() {
         return this.metadata;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("startedAt",
+            this.startedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.startedAt));
+        jsonWriter.writeStringField("completedAt",
+            this.completedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.completedAt));
+        jsonWriter.writeStringField("lastPolledAt",
+            this.lastPolledAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastPolledAt));
+        jsonWriter.writeStringField("state", this.state == null ? null : this.state.toString());
+        jsonWriter.writeStringField("phase", this.phase == null ? null : this.phase.toString());
+        jsonWriter.writeStringField("reason", this.reason);
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeUntyped(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Task from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Task if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the Task.
+     */
+    @Generated
+    public static Task fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            OffsetDateTime startedAt = null;
+            OffsetDateTime completedAt = null;
+            OffsetDateTime lastPolledAt = null;
+            TaskState state = null;
+            TaskPhase phase = null;
+            String reason = null;
+            Map metadata = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("startedAt".equals(fieldName)) {
+                    startedAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("completedAt".equals(fieldName)) {
+                    completedAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastPolledAt".equals(fieldName)) {
+                    lastPolledAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("state".equals(fieldName)) {
+                    state = TaskState.fromString(reader.getString());
+                } else if ("phase".equals(fieldName)) {
+                    phase = TaskPhase.fromString(reader.getString());
+                } else if ("reason".equals(fieldName)) {
+                    reason = reader.getString();
+                } else if ("metadata".equals(fieldName)) {
+                    metadata = reader.readMap(reader1 -> reader1.readUntyped());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            Task deserializedTask = new Task();
+            deserializedTask.id = id;
+            deserializedTask.startedAt = startedAt;
+            deserializedTask.completedAt = completedAt;
+            deserializedTask.lastPolledAt = lastPolledAt;
+            deserializedTask.state = state;
+            deserializedTask.phase = phase;
+            deserializedTask.reason = reason;
+            deserializedTask.metadata = metadata;
+            return deserializedTask;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/TaskPhase.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/TaskPhase.java
index b5e76a5ea727..8d78ebecfe85 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/TaskPhase.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/TaskPhase.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -48,7 +47,6 @@ public TaskPhase() {
      * @return the corresponding TaskPhase.
      */
     @Generated
-    @JsonCreator
     public static TaskPhase fromString(String name) {
         return fromString(name, TaskPhase.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/TaskState.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/TaskState.java
index 1276ae239723..173c4e162a34 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/TaskState.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/TaskState.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -72,7 +71,6 @@ public TaskState() {
      * @return the corresponding TaskState.
      */
     @Generated
-    @JsonCreator
     public static TaskState fromString(String name) {
         return fromString(name, TaskState.class);
     }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ValidateResult.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ValidateResult.java
index aa7c7fa0ed1d..11785c0596ba 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ValidateResult.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/ValidateResult.java
@@ -5,19 +5,22 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The ValidateResult model.
  */
 @Immutable
-public final class ValidateResult {
+public final class ValidateResult implements JsonSerializable {
 
     /*
      * This is the top-level error object whose code matches the x-ms-error-code response header.
      */
     @Generated
-    @JsonProperty(value = "error")
     private ErrorDetail error;
 
     /**
@@ -28,8 +31,7 @@ private ValidateResult() {
     }
 
     /**
-     * Get the error property: This is the top-level error object whose code matches the x-ms-error-code response
-     * header.
+     * Get the error property: This is the top-level error object whose code matches the x-ms-error-code response header.
      *
      * @return the error value.
      */
@@ -37,4 +39,39 @@ private ValidateResult() {
     public ErrorDetail getError() {
         return this.error;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeJsonField("error", this.error);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ValidateResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ValidateResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ValidateResult.
+     */
+    @Generated
+    public static ValidateResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ValidateResult deserializedValidateResult = new ValidateResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("error".equals(fieldName)) {
+                    deserializedValidateResult.error = ErrorDetail.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedValidateResult;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/WebComponent.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/WebComponent.java
index be1f5502a81a..afc15b0278c0 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/WebComponent.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/com/azure/analytics/defender/easm/models/WebComponent.java
@@ -5,105 +5,97 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * The WebComponent model.
  */
 @Immutable
-public final class WebComponent {
+public final class WebComponent implements JsonSerializable {
 
     /*
      * The name property.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The type property.
      */
     @Generated
-    @JsonProperty(value = "type")
     private String type;
 
     /*
      * The version property.
      */
     @Generated
-    @JsonProperty(value = "version")
     private String version;
 
     /*
      * The ruleId property.
      */
     @Generated
-    @JsonProperty(value = "ruleId")
     private List ruleId;
 
     /*
      * The firstSeen property.
      */
     @Generated
-    @JsonProperty(value = "firstSeen")
     private OffsetDateTime firstSeen;
 
     /*
      * The lastSeen property.
      */
     @Generated
-    @JsonProperty(value = "lastSeen")
     private OffsetDateTime lastSeen;
 
     /*
      * The count property.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Long count;
 
     /*
      * The cve property.
      */
     @Generated
-    @JsonProperty(value = "cve")
     private List cve;
 
     /*
      * The endOfLife property.
      */
     @Generated
-    @JsonProperty(value = "endOfLife")
     private Long endOfLife;
 
     /*
      * The recent property.
      */
     @Generated
-    @JsonProperty(value = "recent")
     private Boolean recent;
 
     /*
      * The ports property.
      */
     @Generated
-    @JsonProperty(value = "ports")
     private List ports;
 
     /*
      * The sources property.
      */
     @Generated
-    @JsonProperty(value = "sources")
     private List sources;
 
     /*
      * The service property.
      */
     @Generated
-    @JsonProperty(value = "service")
     private String service;
 
     /**
@@ -242,4 +234,83 @@ public List getSources() {
     public String getService() {
         return this.service;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("type", this.type);
+        jsonWriter.writeStringField("version", this.version);
+        jsonWriter.writeArrayField("ruleId", this.ruleId, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("firstSeen",
+            this.firstSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.firstSeen));
+        jsonWriter.writeStringField("lastSeen",
+            this.lastSeen == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastSeen));
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeArrayField("cve", this.cve, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeNumberField("endOfLife", this.endOfLife);
+        jsonWriter.writeBooleanField("recent", this.recent);
+        jsonWriter.writeArrayField("ports", this.ports, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("sources", this.sources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("service", this.service);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of WebComponent from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of WebComponent if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the WebComponent.
+     */
+    @Generated
+    public static WebComponent fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            WebComponent deserializedWebComponent = new WebComponent();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    deserializedWebComponent.name = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    deserializedWebComponent.type = reader.getString();
+                } else if ("version".equals(fieldName)) {
+                    deserializedWebComponent.version = reader.getString();
+                } else if ("ruleId".equals(fieldName)) {
+                    List ruleId = reader.readArray(reader1 -> reader1.getString());
+                    deserializedWebComponent.ruleId = ruleId;
+                } else if ("firstSeen".equals(fieldName)) {
+                    deserializedWebComponent.firstSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("lastSeen".equals(fieldName)) {
+                    deserializedWebComponent.lastSeen
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("count".equals(fieldName)) {
+                    deserializedWebComponent.count = reader.getNullable(JsonReader::getLong);
+                } else if ("cve".equals(fieldName)) {
+                    List cve = reader.readArray(reader1 -> Cve.fromJson(reader1));
+                    deserializedWebComponent.cve = cve;
+                } else if ("endOfLife".equals(fieldName)) {
+                    deserializedWebComponent.endOfLife = reader.getNullable(JsonReader::getLong);
+                } else if ("recent".equals(fieldName)) {
+                    deserializedWebComponent.recent = reader.getNullable(JsonReader::getBoolean);
+                } else if ("ports".equals(fieldName)) {
+                    List ports = reader.readArray(reader1 -> Port.fromJson(reader1));
+                    deserializedWebComponent.ports = ports;
+                } else if ("sources".equals(fieldName)) {
+                    List sources = reader.readArray(reader1 -> Source.fromJson(reader1));
+                    deserializedWebComponent.sources = sources;
+                } else if ("service".equals(fieldName)) {
+                    deserializedWebComponent.service = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedWebComponent;
+        });
+    }
 }
diff --git a/sdk/easm/azure-analytics-defender-easm/src/main/java/module-info.java b/sdk/easm/azure-analytics-defender-easm/src/main/java/module-info.java
index c69025e9c546..93f8c1b7614b 100644
--- a/sdk/easm/azure-analytics-defender-easm/src/main/java/module-info.java
+++ b/sdk/easm/azure-analytics-defender-easm/src/main/java/module-info.java
@@ -4,7 +4,8 @@
 
 module com.azure.analytics.defender.easm {
     requires transitive com.azure.core;
+    requires transitive com.azure.json;
     exports com.azure.analytics.defender.easm;
     exports com.azure.analytics.defender.easm.models;
-    opens com.azure.analytics.defender.easm.models to com.azure.core, com.fasterxml.jackson.databind;
+    opens com.azure.analytics.defender.easm.models to com.azure.core;
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/RadiologyInsightsAsyncClient.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/RadiologyInsightsAsyncClient.java
index 03fd46aba5a0..5af2e40d4c2d 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/RadiologyInsightsAsyncClient.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/RadiologyInsightsAsyncClient.java
@@ -13,8 +13,8 @@
 import com.azure.core.exception.ResourceNotFoundException;
 import com.azure.core.http.rest.RequestOptions;
 import com.azure.core.util.BinaryData;
-import com.azure.core.util.polling.PollOperationDetails;
 import com.azure.core.util.polling.PollerFlux;
+import com.azure.core.util.polling.PollOperationDetails;
 import com.azure.health.insights.radiologyinsights.implementation.RadiologyInsightsClientImpl;
 import com.azure.health.insights.radiologyinsights.models.RadiologyInsightsData;
 import com.azure.health.insights.radiologyinsights.models.RadiologyInsightsInferenceResult;
@@ -42,34 +42,15 @@ public final class RadiologyInsightsAsyncClient {
      * Create Radiology Insights job
      *
      * Creates a Radiology Insights job with the given request body.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     patients (Required): [
@@ -267,9 +248,7 @@ public final class RadiologyInsightsAsyncClient {
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/RadiologyInsightsClient.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/RadiologyInsightsClient.java
index dd3362335bed..f2839b8647f3 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/RadiologyInsightsClient.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/RadiologyInsightsClient.java
@@ -42,34 +42,15 @@ public final class RadiologyInsightsClient {
      * Create Radiology Insights job
      *
      * Creates a Radiology Insights job with the given request body.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     patients (Required): [
@@ -267,9 +248,7 @@ public final class RadiologyInsightsClient {
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/RadiologyInsightsClientBuilder.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/RadiologyInsightsClientBuilder.java
index e74f9b73f638..7220e3d92138 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/RadiologyInsightsClientBuilder.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/RadiologyInsightsClientBuilder.java
@@ -19,8 +19,8 @@
 import com.azure.core.http.policy.AddDatePolicy;
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.KeyCredentialPolicy;
@@ -281,7 +281,8 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
@@ -289,12 +290,15 @@ private HttpPipeline createHttpPipeline() {
         if (keyCredential != null) {
             policies.add(new KeyCredentialPolicy("Ocp-Apim-Subscription-Key", keyCredential));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/implementation/RadiologyInsightsClientImpl.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/implementation/RadiologyInsightsClientImpl.java
index f233aad65862..34232c597746 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/implementation/RadiologyInsightsClientImpl.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/implementation/RadiologyInsightsClientImpl.java
@@ -31,9 +31,9 @@
 import com.azure.core.util.Context;
 import com.azure.core.util.DateTimeRfc1123;
 import com.azure.core.util.FluxUtil;
-import com.azure.core.util.polling.PollOperationDetails;
 import com.azure.core.util.polling.PollerFlux;
 import com.azure.core.util.polling.PollingStrategyOptions;
+import com.azure.core.util.polling.PollOperationDetails;
 import com.azure.core.util.polling.SyncPoller;
 import com.azure.core.util.serializer.JacksonAdapter;
 import com.azure.core.util.serializer.SerializerAdapter;
@@ -55,14 +55,12 @@ public final class RadiologyInsightsClientImpl {
     private final RadiologyInsightsClientService service;
 
     /**
-     * Supported Cognitive Services endpoints (protocol and hostname, for example:
-     * https://westus2.api.cognitive.microsoft.com).
+     * Supported Cognitive Services endpoints (protocol and hostname, for example: https://westus2.api.cognitive.microsoft.com).
      */
     private final String endpoint;
 
     /**
-     * Gets Supported Cognitive Services endpoints (protocol and hostname, for example:
-     * https://westus2.api.cognitive.microsoft.com).
+     * Gets Supported Cognitive Services endpoints (protocol and hostname, for example: https://westus2.api.cognitive.microsoft.com).
      * 
      * @return the endpoint value.
      */
@@ -115,8 +113,7 @@ public SerializerAdapter getSerializerAdapter() {
     /**
      * Initializes an instance of RadiologyInsightsClient client.
      * 
-     * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example:
-     * https://westus2.api.cognitive.microsoft.com).
+     * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example: https://westus2.api.cognitive.microsoft.com).
      * @param serviceVersion Service version.
      */
     public RadiologyInsightsClientImpl(String endpoint, RadiologyInsightsServiceVersion serviceVersion) {
@@ -128,8 +125,7 @@ public RadiologyInsightsClientImpl(String endpoint, RadiologyInsightsServiceVers
      * Initializes an instance of RadiologyInsightsClient client.
      * 
      * @param httpPipeline The HTTP pipeline to send requests through.
-     * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example:
-     * https://westus2.api.cognitive.microsoft.com).
+     * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example: https://westus2.api.cognitive.microsoft.com).
      * @param serviceVersion Service version.
      */
     public RadiologyInsightsClientImpl(HttpPipeline httpPipeline, String endpoint,
@@ -142,8 +138,7 @@ public RadiologyInsightsClientImpl(HttpPipeline httpPipeline, String endpoint,
      * 
      * @param httpPipeline The HTTP pipeline to send requests through.
      * @param serializerAdapter The serializer to serialize an object into a string.
-     * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example:
-     * https://westus2.api.cognitive.microsoft.com).
+     * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example: https://westus2.api.cognitive.microsoft.com).
      * @param serviceVersion Service version.
      */
     public RadiologyInsightsClientImpl(HttpPipeline httpPipeline, SerializerAdapter serializerAdapter, String endpoint,
@@ -157,8 +152,7 @@ public RadiologyInsightsClientImpl(HttpPipeline httpPipeline, SerializerAdapter
     }
 
     /**
-     * The interface defining all the services for RadiologyInsightsClient to be used by the proxy service to perform
-     * REST calls.
+     * The interface defining all the services for RadiologyInsightsClient to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}/health-insights")
     @ServiceInterface(name = "RadiologyInsightsCli")
@@ -190,34 +184,15 @@ Response inferRadiologyInsightsSync(@HostParam("endpoint") String en
      * Create Radiology Insights job
      * 
      * Creates a Radiology Insights job with the given request body.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     patients (Required): [
@@ -415,9 +390,7 @@ Response inferRadiologyInsightsSync(@HostParam("endpoint") String en
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -439,8 +412,7 @@ Response inferRadiologyInsightsSync(@HostParam("endpoint") String en
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return status details for long running operations along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return status details for long running operations along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     private Mono> inferRadiologyInsightsWithResponseAsync(BinaryData radiologyInsightsData,
@@ -451,14 +423,14 @@ private Mono> inferRadiologyInsightsWithResponseAsync(Binar
         String repeatabilityFirstSent = DateTimeRfc1123.toRfc1123String(OffsetDateTime.now());
         requestOptionsLocal.addRequestCallback(requestLocal -> {
             if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-request-id")) == null) {
-                requestLocal.getHeaders().set(HttpHeaderName.fromString("repeatability-request-id"),
-                    repeatabilityRequestId);
+                requestLocal.getHeaders()
+                    .set(HttpHeaderName.fromString("repeatability-request-id"), repeatabilityRequestId);
             }
         });
         requestOptionsLocal.addRequestCallback(requestLocal -> {
             if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-first-sent")) == null) {
-                requestLocal.getHeaders().set(HttpHeaderName.fromString("repeatability-first-sent"),
-                    repeatabilityFirstSent);
+                requestLocal.getHeaders()
+                    .set(HttpHeaderName.fromString("repeatability-first-sent"), repeatabilityFirstSent);
             }
         });
         return FluxUtil.withContext(context -> service.inferRadiologyInsights(this.getEndpoint(),
@@ -469,34 +441,15 @@ private Mono> inferRadiologyInsightsWithResponseAsync(Binar
      * Create Radiology Insights job
      * 
      * Creates a Radiology Insights job with the given request body.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     patients (Required): [
@@ -694,9 +647,7 @@ private Mono> inferRadiologyInsightsWithResponseAsync(Binar
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -729,14 +680,14 @@ private Response inferRadiologyInsightsWithResponse(BinaryData radio
         String repeatabilityFirstSent = DateTimeRfc1123.toRfc1123String(OffsetDateTime.now());
         requestOptionsLocal.addRequestCallback(requestLocal -> {
             if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-request-id")) == null) {
-                requestLocal.getHeaders().set(HttpHeaderName.fromString("repeatability-request-id"),
-                    repeatabilityRequestId);
+                requestLocal.getHeaders()
+                    .set(HttpHeaderName.fromString("repeatability-request-id"), repeatabilityRequestId);
             }
         });
         requestOptionsLocal.addRequestCallback(requestLocal -> {
             if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-first-sent")) == null) {
-                requestLocal.getHeaders().set(HttpHeaderName.fromString("repeatability-first-sent"),
-                    repeatabilityFirstSent);
+                requestLocal.getHeaders()
+                    .set(HttpHeaderName.fromString("repeatability-first-sent"), repeatabilityFirstSent);
             }
         });
         return service.inferRadiologyInsightsSync(this.getEndpoint(), this.getServiceVersion().getVersion(), accept,
@@ -747,34 +698,15 @@ private Response inferRadiologyInsightsWithResponse(BinaryData radio
      * Create Radiology Insights job
      * 
      * Creates a Radiology Insights job with the given request body.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     patients (Required): [
@@ -972,9 +904,7 @@ private Response inferRadiologyInsightsWithResponse(BinaryData radio
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1007,7 +937,8 @@ public PollerFlux beginInferRadiologyInsightsAsync(Binar
                 new PollingStrategyOptions(this.getHttpPipeline())
                     .setEndpoint("{endpoint}/health-insights".replace("{endpoint}", this.getEndpoint()))
                     .setContext(requestOptions != null && requestOptions.getContext() != null
-                        ? requestOptions.getContext() : Context.NONE)
+                        ? requestOptions.getContext()
+                        : Context.NONE)
                     .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
     }
@@ -1016,34 +947,15 @@ public PollerFlux beginInferRadiologyInsightsAsync(Binar
      * Create Radiology Insights job
      * 
      * Creates a Radiology Insights job with the given request body.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     patients (Required): [
@@ -1241,9 +1153,7 @@ public PollerFlux beginInferRadiologyInsightsAsync(Binar
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1276,7 +1186,8 @@ public SyncPoller beginInferRadiologyInsights(BinaryData
                 new PollingStrategyOptions(this.getHttpPipeline())
                     .setEndpoint("{endpoint}/health-insights".replace("{endpoint}", this.getEndpoint()))
                     .setContext(requestOptions != null && requestOptions.getContext() != null
-                        ? requestOptions.getContext() : Context.NONE)
+                        ? requestOptions.getContext()
+                        : Context.NONE)
                     .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class));
     }
@@ -1285,34 +1196,15 @@ public SyncPoller beginInferRadiologyInsights(BinaryData
      * Create Radiology Insights job
      * 
      * Creates a Radiology Insights job with the given request body.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     patients (Required): [
@@ -1510,9 +1402,7 @@ public SyncPoller beginInferRadiologyInsights(BinaryData
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1545,7 +1435,8 @@ public SyncPoller beginInferRadiologyInsights(BinaryData
                 new PollingStrategyOptions(this.getHttpPipeline())
                     .setEndpoint("{endpoint}/health-insights".replace("{endpoint}", this.getEndpoint()))
                     .setContext(requestOptions != null && requestOptions.getContext() != null
-                        ? requestOptions.getContext() : Context.NONE)
+                        ? requestOptions.getContext()
+                        : Context.NONE)
                     .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(PollOperationDetails.class),
             TypeReference.createInstance(RadiologyInsightsInferenceResult.class));
@@ -1555,34 +1446,15 @@ public SyncPoller beginInferRadiologyInsights(BinaryData
      * Create Radiology Insights job
      * 
      * Creates a Radiology Insights job with the given request body.
-     * 

- * Header Parameters - *

+ *

Header Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as HTTP-date
* You can add these to a request with {@link RequestOptions#addHeader} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     patients (Required): [
@@ -1780,9 +1652,7 @@ public SyncPoller beginInferRadiologyInsights(BinaryData
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1815,7 +1685,8 @@ public SyncPoller beginInferRadiologyInsights(BinaryData
                 new PollingStrategyOptions(this.getHttpPipeline())
                     .setEndpoint("{endpoint}/health-insights".replace("{endpoint}", this.getEndpoint()))
                     .setContext(requestOptions != null && requestOptions.getContext() != null
-                        ? requestOptions.getContext() : Context.NONE)
+                        ? requestOptions.getContext()
+                        : Context.NONE)
                     .setServiceVersion(this.getServiceVersion().getVersion())),
             TypeReference.createInstance(PollOperationDetails.class),
             TypeReference.createInstance(RadiologyInsightsInferenceResult.class));
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/implementation/package-info.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/implementation/package-info.java
index ed10e2a8f015..035af3013337 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/implementation/package-info.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/implementation/package-info.java
@@ -4,8 +4,7 @@
 /**
  * 
  * Package containing the implementations for RadiologyInsights.
- * Azure AI Health Insights provides an API that serves insight models, specific for Health & Life Sciences, that
- * perform analysis and provide inferences to be used by a human.
+ * Azure AI Health Insights provides an API that serves insight models, specific for Health & Life Sciences, that perform analysis and provide inferences to be used by a human.
  * 
  */
 package com.azure.health.insights.radiologyinsights.implementation;
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/AgeMismatchInference.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/AgeMismatchInference.java
index 6f26c17f0aec..0b234d680b07 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/AgeMismatchInference.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/AgeMismatchInference.java
@@ -5,15 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.List;
 
 /**
- * A notification for age mismatch is displayed when the age mentioned in a document for a specific patient does not
- * match the age specified in the patient information.
+ * A notification for age mismatch is displayed when the age mentioned in a document for a specific patient does not match the age specified in the patient information.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("ageMismatch")
 @Immutable
 public final class AgeMismatchInference extends FhirR4Extendible1 {
 
@@ -22,5 +22,46 @@ public final class AgeMismatchInference extends FhirR4Extendible1 {
      */
     @Generated
     private AgeMismatchInference() {
+        setKind(RadiologyInsightsInferenceType.AGE_MISMATCH);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AgeMismatchInference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AgeMismatchInference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AgeMismatchInference.
+     */
+    @Generated
+    public static AgeMismatchInference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AgeMismatchInference deserializedAgeMismatchInference = new AgeMismatchInference();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    deserializedAgeMismatchInference
+                        .setKind(RadiologyInsightsInferenceType.fromString(reader.getString()));
+                } else if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedAgeMismatchInference.setExtension(extension);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedAgeMismatchInference;
+        });
     }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ClinicalDocumentType.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ClinicalDocumentType.java
index a4cbd9edbc6a..c4aaddd8df25 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ClinicalDocumentType.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ClinicalDocumentType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -78,7 +77,6 @@ public ClinicalDocumentType() {
      * @return the corresponding ClinicalDocumentType.
      */
     @Generated
-    @JsonCreator
     public static ClinicalDocumentType fromString(String name) {
         return fromString(name, ClinicalDocumentType.class);
     }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/CompleteOrderDiscrepancyInference.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/CompleteOrderDiscrepancyInference.java
index b6fb89e1fe43..1b6f6c87fcc5 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/CompleteOrderDiscrepancyInference.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/CompleteOrderDiscrepancyInference.java
@@ -5,18 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
- * A complete order discrepancy is shown when one or more body parts and/or measurements that should be in the document
- * (because there is a complete order) are not present.
+ * A complete order discrepancy is shown when one or more body parts and/or measurements that should be in the document (because there is a complete order) are not present.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("completeOrderDiscrepancy")
 @Immutable
 public final class CompleteOrderDiscrepancyInference extends FhirR4Extendible1 {
 
@@ -24,21 +21,18 @@ public final class CompleteOrderDiscrepancyInference extends FhirR4Extendible1 {
      * Order type : CPT ultrasound complete code for abdomen, retroperitoneal, pelvis or breast.
      */
     @Generated
-    @JsonProperty(value = "orderType")
-    private FhirR4CodeableConcept orderType;
+    private final FhirR4CodeableConcept orderType;
 
     /*
      * List of missing body parts required by a complete order : SNOMED CT codes.
      */
     @Generated
-    @JsonProperty(value = "missingBodyParts")
     private List missingBodyParts;
 
     /*
      * List of missing body parts that require measurement by a complete order : SNOMED CT codes.
      */
     @Generated
-    @JsonProperty(value = "missingBodyPartMeasurements")
     private List missingBodyPartMeasurements;
 
     /**
@@ -47,14 +41,13 @@ public final class CompleteOrderDiscrepancyInference extends FhirR4Extendible1 {
      * @param orderType the orderType value to set.
      */
     @Generated
-    @JsonCreator
-    private CompleteOrderDiscrepancyInference(@JsonProperty(value = "orderType") FhirR4CodeableConcept orderType) {
+    private CompleteOrderDiscrepancyInference(FhirR4CodeableConcept orderType) {
+        setKind(RadiologyInsightsInferenceType.COMPLETE_ORDER_DISCREPANCY);
         this.orderType = orderType;
     }
 
     /**
-     * Get the orderType property: Order type : CPT ultrasound complete code for abdomen, retroperitoneal, pelvis or
-     * breast.
+     * Get the orderType property: Order type : CPT ultrasound complete code for abdomen, retroperitoneal, pelvis or breast.
      *
      * @return the orderType value.
      */
@@ -74,8 +67,7 @@ public List getMissingBodyParts() {
     }
 
     /**
-     * Get the missingBodyPartMeasurements property: List of missing body parts that require measurement by a complete
-     * order : SNOMED CT codes.
+     * Get the missingBodyPartMeasurements property: List of missing body parts that require measurement by a complete order : SNOMED CT codes.
      *
      * @return the missingBodyPartMeasurements value.
      */
@@ -83,4 +75,64 @@ public List getMissingBodyParts() {
     public List getMissingBodyPartMeasurements() {
         return this.missingBodyPartMeasurements;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("orderType", this.orderType);
+        jsonWriter.writeArrayField("missingBodyParts", this.missingBodyParts,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("missingBodyPartMeasurements", this.missingBodyPartMeasurements,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CompleteOrderDiscrepancyInference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CompleteOrderDiscrepancyInference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the CompleteOrderDiscrepancyInference.
+     */
+    @Generated
+    public static CompleteOrderDiscrepancyInference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RadiologyInsightsInferenceType kind = RadiologyInsightsInferenceType.COMPLETE_ORDER_DISCREPANCY;
+            List extension = null;
+            FhirR4CodeableConcept orderType = null;
+            List missingBodyParts = null;
+            List missingBodyPartMeasurements = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = RadiologyInsightsInferenceType.fromString(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("orderType".equals(fieldName)) {
+                    orderType = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("missingBodyParts".equals(fieldName)) {
+                    missingBodyParts = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else if ("missingBodyPartMeasurements".equals(fieldName)) {
+                    missingBodyPartMeasurements = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            CompleteOrderDiscrepancyInference deserializedCompleteOrderDiscrepancyInference
+                = new CompleteOrderDiscrepancyInference(orderType);
+            deserializedCompleteOrderDiscrepancyInference.setKind(kind);
+            deserializedCompleteOrderDiscrepancyInference.setExtension(extension);
+            deserializedCompleteOrderDiscrepancyInference.missingBodyParts = missingBodyParts;
+            deserializedCompleteOrderDiscrepancyInference.missingBodyPartMeasurements = missingBodyPartMeasurements;
+            return deserializedCompleteOrderDiscrepancyInference;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ContactPointSystem.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ContactPointSystem.java
index 978ca28b9e3c..aa36cee3953d 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ContactPointSystem.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ContactPointSystem.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -73,7 +72,6 @@ public ContactPointSystem() {
      * @return the corresponding ContactPointSystem.
      */
     @Generated
-    @JsonCreator
     public static ContactPointSystem fromString(String name) {
         return fromString(name, ContactPointSystem.class);
     }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ContactPointUse.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ContactPointUse.java
index c5f698748b37..0008f7d8e811 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ContactPointUse.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ContactPointUse.java
@@ -5,12 +5,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
  * Contact Point Use
- * See: http://hl7.org/fhir/ValueSet/contact-point-use.
+ * See: 	http://hl7.org/fhir/ValueSet/contact-point-use.
  */
 public final class ContactPointUse extends ExpandableStringEnum {
 
@@ -61,7 +60,6 @@ public ContactPointUse() {
      * @return the corresponding ContactPointUse.
      */
     @Generated
-    @JsonCreator
     public static ContactPointUse fromString(String name) {
         return fromString(name, ContactPointUse.class);
     }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/CriticalResult.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/CriticalResult.java
index 9e31a598b3ef..341aebfa31b7 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/CriticalResult.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/CriticalResult.java
@@ -5,27 +5,28 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Critical Result consists of two properties.
  */
 @Immutable
-public final class CriticalResult {
+public final class CriticalResult implements JsonSerializable {
 
     /*
      * Description : medical problem.
      */
     @Generated
-    @JsonProperty(value = "description")
-    private String description;
+    private final String description;
 
     /*
      * Finding linked to the critical result.
      */
     @Generated
-    @JsonProperty(value = "finding")
     private FhirR4Observation finding;
 
     /**
@@ -34,8 +35,7 @@ public final class CriticalResult {
      * @param description the description value to set.
      */
     @Generated
-    @JsonCreator
-    private CriticalResult(@JsonProperty(value = "description") String description) {
+    private CriticalResult(String description) {
         this.description = description;
     }
 
@@ -58,4 +58,46 @@ public String getDescription() {
     public FhirR4Observation getFinding() {
         return this.finding;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeJsonField("finding", this.finding);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CriticalResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CriticalResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the CriticalResult.
+     */
+    @Generated
+    public static CriticalResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String description = null;
+            FhirR4Observation finding = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("finding".equals(fieldName)) {
+                    finding = FhirR4Observation.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            CriticalResult deserializedCriticalResult = new CriticalResult(description);
+            deserializedCriticalResult.finding = finding;
+            return deserializedCriticalResult;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/CriticalResultInference.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/CriticalResultInference.java
index d8145b465d99..92a9e106709f 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/CriticalResultInference.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/CriticalResultInference.java
@@ -5,17 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.List;
 
 /**
- * Critical results refer to findings of utmost importance that may require timely attention due to their potential
- * impact on patient care.
+ * Critical results refer to findings of utmost importance that may require timely attention due to their potential impact on patient care.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("criticalResult")
 @Immutable
 public final class CriticalResultInference extends FhirR4Extendible1 {
 
@@ -23,8 +21,7 @@ public final class CriticalResultInference extends FhirR4Extendible1 {
      * The complete Critical Result, as outlined below, will be reused for the recommendation.
      */
     @Generated
-    @JsonProperty(value = "result")
-    private CriticalResult result;
+    private final CriticalResult result;
 
     /**
      * Creates an instance of CriticalResultInference class.
@@ -32,8 +29,8 @@ public final class CriticalResultInference extends FhirR4Extendible1 {
      * @param result the result value to set.
      */
     @Generated
-    @JsonCreator
-    private CriticalResultInference(@JsonProperty(value = "result") CriticalResult result) {
+    private CriticalResultInference(CriticalResult result) {
+        setKind(RadiologyInsightsInferenceType.CRITICAL_RESULT);
         this.result = result;
     }
 
@@ -46,4 +43,51 @@ private CriticalResultInference(@JsonProperty(value = "result") CriticalResult r
     public CriticalResult getResult() {
         return this.result;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("result", this.result);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CriticalResultInference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CriticalResultInference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the CriticalResultInference.
+     */
+    @Generated
+    public static CriticalResultInference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RadiologyInsightsInferenceType kind = RadiologyInsightsInferenceType.CRITICAL_RESULT;
+            List extension = null;
+            CriticalResult result = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = RadiologyInsightsInferenceType.fromString(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("result".equals(fieldName)) {
+                    result = CriticalResult.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            CriticalResultInference deserializedCriticalResultInference = new CriticalResultInference(result);
+            deserializedCriticalResultInference.setKind(kind);
+            deserializedCriticalResultInference.setExtension(extension);
+            return deserializedCriticalResultInference;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentAdministrativeMetadata.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentAdministrativeMetadata.java
index b335a131d344..451a8d526077 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentAdministrativeMetadata.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentAdministrativeMetadata.java
@@ -5,27 +5,29 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Document administrative metadata.
  */
 @Fluent
-public final class DocumentAdministrativeMetadata {
+public final class DocumentAdministrativeMetadata implements JsonSerializable {
 
     /*
      * List of procedure information associated with the document.
      */
     @Generated
-    @JsonProperty(value = "orderedProcedures")
     private List orderedProcedures;
 
     /*
      * Reference to the encounter associated with the document.
      */
     @Generated
-    @JsonProperty(value = "encounterId")
     private String encounterId;
 
     /**
@@ -78,4 +80,46 @@ public DocumentAdministrativeMetadata setEncounterId(String encounterId) {
         this.encounterId = encounterId;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("orderedProcedures", this.orderedProcedures,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("encounterId", this.encounterId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentAdministrativeMetadata from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentAdministrativeMetadata if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the DocumentAdministrativeMetadata.
+     */
+    @Generated
+    public static DocumentAdministrativeMetadata fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DocumentAdministrativeMetadata deserializedDocumentAdministrativeMetadata
+                = new DocumentAdministrativeMetadata();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("orderedProcedures".equals(fieldName)) {
+                    List orderedProcedures
+                        = reader.readArray(reader1 -> FhirR4Extendible.fromJson(reader1));
+                    deserializedDocumentAdministrativeMetadata.orderedProcedures = orderedProcedures;
+                } else if ("encounterId".equals(fieldName)) {
+                    deserializedDocumentAdministrativeMetadata.encounterId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedDocumentAdministrativeMetadata;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentAuthor.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentAuthor.java
index 1ca75cac5f42..8f5e5a8092c0 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentAuthor.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentAuthor.java
@@ -5,26 +5,28 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Document author.
  */
 @Fluent
-public final class DocumentAuthor {
+public final class DocumentAuthor implements JsonSerializable {
 
     /*
      * author id
      */
     @Generated
-    @JsonProperty(value = "id")
     private String id;
 
     /*
      * Text representation of the full name
      */
     @Generated
-    @JsonProperty(value = "fullName")
     private String fullName;
 
     /**
@@ -77,4 +79,42 @@ public DocumentAuthor setFullName(String fullName) {
         this.fullName = fullName;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("fullName", this.fullName);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentAuthor from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentAuthor if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the DocumentAuthor.
+     */
+    @Generated
+    public static DocumentAuthor fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DocumentAuthor deserializedDocumentAuthor = new DocumentAuthor();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    deserializedDocumentAuthor.id = reader.getString();
+                } else if ("fullName".equals(fieldName)) {
+                    deserializedDocumentAuthor.fullName = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedDocumentAuthor;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentContent.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentContent.java
index 2b03fa19a3d5..e32e1b6ed82c 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentContent.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentContent.java
@@ -5,14 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The content of the patient document.
  */
 @Immutable
-public final class DocumentContent {
+public final class DocumentContent implements JsonSerializable {
 
     /*
      * The type of the content's source.
@@ -20,15 +23,13 @@ public final class DocumentContent {
      * In case the source type is 'reference', the content is given as a URI.
      */
     @Generated
-    @JsonProperty(value = "sourceType")
-    private DocumentContentSourceType sourceType;
+    private final DocumentContentSourceType sourceType;
 
     /*
      * The content of the document, given either inline (as a string) or as a reference (URI).
      */
     @Generated
-    @JsonProperty(value = "value")
-    private String value;
+    private final String value;
 
     /**
      * Creates an instance of DocumentContent class.
@@ -37,9 +38,7 @@ public final class DocumentContent {
      * @param value the value value to set.
      */
     @Generated
-    @JsonCreator
-    public DocumentContent(@JsonProperty(value = "sourceType") DocumentContentSourceType sourceType,
-        @JsonProperty(value = "value") String value) {
+    public DocumentContent(DocumentContentSourceType sourceType, String value) {
         this.sourceType = sourceType;
         this.value = value;
     }
@@ -65,4 +64,44 @@ public DocumentContentSourceType getSourceType() {
     public String getValue() {
         return this.value;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("sourceType", this.sourceType == null ? null : this.sourceType.toString());
+        jsonWriter.writeStringField("value", this.value);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DocumentContent from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DocumentContent if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the DocumentContent.
+     */
+    @Generated
+    public static DocumentContent fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DocumentContentSourceType sourceType = null;
+            String value = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("sourceType".equals(fieldName)) {
+                    sourceType = DocumentContentSourceType.fromString(reader.getString());
+                } else if ("value".equals(fieldName)) {
+                    value = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new DocumentContent(sourceType, value);
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentContentSourceType.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentContentSourceType.java
index cc048c890d15..daac504e2ee1 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentContentSourceType.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentContentSourceType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -44,7 +43,6 @@ public DocumentContentSourceType() {
      * @return the corresponding DocumentContentSourceType.
      */
     @Generated
-    @JsonCreator
     public static DocumentContentSourceType fromString(String name) {
         return fromString(name, DocumentContentSourceType.class);
     }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentType.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentType.java
index 9f018c482836..59ab463370f5 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentType.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/DocumentType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -54,7 +53,6 @@ public DocumentType() {
      * @return the corresponding DocumentType.
      */
     @Generated
-    @JsonCreator
     public static DocumentType fromString(String name) {
         return fromString(name, DocumentType.class);
     }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/Encounter.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/Encounter.java
index 244298852194..5f2c3db343b8 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/Encounter.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/Encounter.java
@@ -5,36 +5,35 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * visit/encounter information.
  */
 @Fluent
-public final class Encounter {
+public final class Encounter implements JsonSerializable {
 
     /*
      * The id of the visit.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * Time period of the visit.
-     * In case of admission, use timePeriod.start to indicate the admission time and timePeriod.end to indicate the
-     * discharge time.
+     * In case of admission, use timePeriod.start to indicate the admission time and timePeriod.end to indicate the discharge time.
      */
     @Generated
-    @JsonProperty(value = "period")
     private TimePeriod period;
 
     /*
      * The class of the encounter.
      */
     @Generated
-    @JsonProperty(value = "class")
     private EncounterClass classProperty;
 
     /**
@@ -43,8 +42,7 @@ public final class Encounter {
      * @param id the id value to set.
      */
     @Generated
-    @JsonCreator
-    public Encounter(@JsonProperty(value = "id") String id) {
+    public Encounter(String id) {
         this.id = id;
     }
 
@@ -60,8 +58,7 @@ public String getId() {
 
     /**
      * Get the period property: Time period of the visit.
-     * In case of admission, use timePeriod.start to indicate the admission time and timePeriod.end to indicate the
-     * discharge time.
+     * In case of admission, use timePeriod.start to indicate the admission time and timePeriod.end to indicate the discharge time.
      *
      * @return the period value.
      */
@@ -72,8 +69,7 @@ public TimePeriod getPeriod() {
 
     /**
      * Set the period property: Time period of the visit.
-     * In case of admission, use timePeriod.start to indicate the admission time and timePeriod.end to indicate the
-     * discharge time.
+     * In case of admission, use timePeriod.start to indicate the admission time and timePeriod.end to indicate the discharge time.
      *
      * @param period the period value to set.
      * @return the Encounter object itself.
@@ -105,4 +101,51 @@ public Encounter setClassProperty(EncounterClass classProperty) {
         this.classProperty = classProperty;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeJsonField("period", this.period);
+        jsonWriter.writeStringField("class", this.classProperty == null ? null : this.classProperty.toString());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Encounter from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Encounter if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the Encounter.
+     */
+    @Generated
+    public static Encounter fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            TimePeriod period = null;
+            EncounterClass classProperty = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("period".equals(fieldName)) {
+                    period = TimePeriod.fromJson(reader);
+                } else if ("class".equals(fieldName)) {
+                    classProperty = EncounterClass.fromString(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            Encounter deserializedEncounter = new Encounter(id);
+            deserializedEncounter.period = period;
+            deserializedEncounter.classProperty = classProperty;
+            return deserializedEncounter;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/EncounterClass.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/EncounterClass.java
index 8065adeae697..e78daeba0428 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/EncounterClass.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/EncounterClass.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -14,39 +13,31 @@
 public final class EncounterClass extends ExpandableStringEnum {
 
     /**
-     * A patient encounter where a patient is admitted by a hospital or equivalent facility, assigned to a location
-     * where patients generally stay at least overnight and provided with room, board, and continuous nursing service.
+     * A patient encounter where a patient is admitted by a hospital or equivalent facility, assigned to a location where patients generally stay at least overnight and provided with room, board, and continuous nursing service.
      */
     @Generated
     public static final EncounterClass IN_PATIENT = fromString("inpatient");
 
     /**
-     * The term ambulatory usually implies that the patient has come to the location and is not assigned to a bed.
-     * Sometimes referred to as an outpatient encounter.
+     * The term ambulatory usually implies that the patient has come to the location and is not assigned to a bed. Sometimes referred to as an outpatient encounter.
      */
     @Generated
     public static final EncounterClass AMBULATORY = fromString("ambulatory");
 
     /**
-     * An encounter where the patient usually will start in different encounter, such as one in the emergency department
-     * but then transition to this type of encounter because they require a significant period of treatment and
-     * monitoring to determine whether or not their condition warrants an inpatient admission or discharge.
+     * An encounter where the patient usually will start in different encounter, such as one in the emergency department but then transition to this type of encounter because they require a significant period of treatment and monitoring to determine whether or not their condition warrants an inpatient admission or discharge.
      */
     @Generated
     public static final EncounterClass OBSERVATION = fromString("observation");
 
     /**
-     * A patient encounter that takes place at a dedicated healthcare service delivery location where the patient
-     * receives immediate evaluation and treatment, provided until the patient can be discharged or responsibility for
-     * the patient's care is transferred elsewhere (for example, the patient could be admitted as an inpatient or
-     * transferred to another facility.
+     * A patient encounter that takes place at a dedicated healthcare service delivery location where the patient receives immediate evaluation and treatment, provided until the patient can be discharged or responsibility for the patient's care is transferred elsewhere (for example, the patient could be admitted as an inpatient or transferred to another facility.
      */
     @Generated
     public static final EncounterClass EMERGENCY = fromString("emergency");
 
     /**
-     * A patient encounter where the patient is not physically present for the encounter, such as in a telehealth
-     * encounter, phone call, or electronic communication.
+     * A patient encounter where the patient is not physically present for the encounter, such as in a telehealth encounter, phone call, or electronic communication.
      */
     @Generated
     public static final EncounterClass VIRTUAL = fromString("virtual");
@@ -74,7 +65,6 @@ public EncounterClass() {
      * @return the corresponding EncounterClass.
      */
     @Generated
-    @JsonCreator
     public static EncounterClass fromString(String name) {
         return fromString(name, EncounterClass.class);
     }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Annotation.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Annotation.java
index 8ca56df0b95e..eb4c0e0427b1 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Annotation.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Annotation.java
@@ -5,12 +5,14 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
- * A text note which also contains information about who made the statement and when
+ * A text note which also  contains information about who made the statement and when
  * Based on [FHIR Annotation](https://www.hl7.org/fhir/R4/datatypes.html#Annotation).
  */
 @Fluent
@@ -20,22 +22,19 @@ public final class FhirR4Annotation extends FhirR4Element {
      * Individual responsible for the annotation
      */
     @Generated
-    @JsonProperty(value = "authorString")
     private String authorString;
 
     /*
      * When the annotation was made
      */
     @Generated
-    @JsonProperty(value = "time")
     private String time;
 
     /*
      * The annotation - text content (as markdown)
      */
     @Generated
-    @JsonProperty(value = "text")
-    private String text;
+    private final String text;
 
     /**
      * Creates an instance of FhirR4Annotation class.
@@ -43,8 +42,7 @@ public final class FhirR4Annotation extends FhirR4Element {
      * @param text the text value to set.
      */
     @Generated
-    @JsonCreator
-    public FhirR4Annotation(@JsonProperty(value = "text") String text) {
+    public FhirR4Annotation(String text) {
         this.text = text;
     }
 
@@ -121,4 +119,61 @@ public FhirR4Annotation setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("text", this.text);
+        jsonWriter.writeStringField("authorString", this.authorString);
+        jsonWriter.writeStringField("time", this.time);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Annotation from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Annotation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FhirR4Annotation.
+     */
+    @Generated
+    public static FhirR4Annotation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            List extension = null;
+            String text = null;
+            String authorString = null;
+            String time = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("text".equals(fieldName)) {
+                    text = reader.getString();
+                } else if ("authorString".equals(fieldName)) {
+                    authorString = reader.getString();
+                } else if ("time".equals(fieldName)) {
+                    time = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            FhirR4Annotation deserializedFhirR4Annotation = new FhirR4Annotation(text);
+            deserializedFhirR4Annotation.setId(id);
+            deserializedFhirR4Annotation.setExtension(extension);
+            deserializedFhirR4Annotation.authorString = authorString;
+            deserializedFhirR4Annotation.time = time;
+            return deserializedFhirR4Annotation;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4CodeableConcept.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4CodeableConcept.java
index ebef937de25a..6db9cf401bfe 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4CodeableConcept.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4CodeableConcept.java
@@ -5,7 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -19,14 +22,12 @@ public final class FhirR4CodeableConcept extends FhirR4Element {
      * Code defined by a terminology system
      */
     @Generated
-    @JsonProperty(value = "coding")
     private List coding;
 
     /*
      * Plain text representation of the concept
      */
     @Generated
-    @JsonProperty(value = "text")
     private String text;
 
     /**
@@ -99,4 +100,50 @@ public FhirR4CodeableConcept setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("coding", this.coding, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("text", this.text);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4CodeableConcept from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4CodeableConcept if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4CodeableConcept.
+     */
+    @Generated
+    public static FhirR4CodeableConcept fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4CodeableConcept deserializedFhirR4CodeableConcept = new FhirR4CodeableConcept();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    deserializedFhirR4CodeableConcept.setId(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedFhirR4CodeableConcept.setExtension(extension);
+                } else if ("coding".equals(fieldName)) {
+                    List coding = reader.readArray(reader1 -> FhirR4Coding.fromJson(reader1));
+                    deserializedFhirR4CodeableConcept.coding = coding;
+                } else if ("text".equals(fieldName)) {
+                    deserializedFhirR4CodeableConcept.text = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4CodeableConcept;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Coding.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Coding.java
index b12b4a55fbcd..035c00fd5dcb 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Coding.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Coding.java
@@ -5,7 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -19,28 +22,24 @@ public final class FhirR4Coding extends FhirR4Element {
      * Identity of the terminology system
      */
     @Generated
-    @JsonProperty(value = "system")
     private String system;
 
     /*
      * Version of the system - if relevant
      */
     @Generated
-    @JsonProperty(value = "version")
     private String version;
 
     /*
      * Symbol in syntax defined by the system
      */
     @Generated
-    @JsonProperty(value = "code")
     private String code;
 
     /*
      * Representation defined by the system
      */
     @Generated
-    @JsonProperty(value = "display")
     private String display;
 
     /**
@@ -157,4 +156,55 @@ public FhirR4Coding setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("system", this.system);
+        jsonWriter.writeStringField("version", this.version);
+        jsonWriter.writeStringField("code", this.code);
+        jsonWriter.writeStringField("display", this.display);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Coding from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Coding if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4Coding.
+     */
+    @Generated
+    public static FhirR4Coding fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4Coding deserializedFhirR4Coding = new FhirR4Coding();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    deserializedFhirR4Coding.setId(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedFhirR4Coding.setExtension(extension);
+                } else if ("system".equals(fieldName)) {
+                    deserializedFhirR4Coding.system = reader.getString();
+                } else if ("version".equals(fieldName)) {
+                    deserializedFhirR4Coding.version = reader.getString();
+                } else if ("code".equals(fieldName)) {
+                    deserializedFhirR4Coding.code = reader.getString();
+                } else if ("display".equals(fieldName)) {
+                    deserializedFhirR4Coding.display = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4Coding;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Condition.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Condition.java
index 69c77ac486e0..45d8ba48e9dc 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Condition.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Condition.java
@@ -5,18 +5,18 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Detailed information about conditions, problems or diagnoses
  * Based on [FHIR Condition](https://www.hl7.org/fhir/R4/condition.html).
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "resourceType")
-@JsonTypeName("Condition")
 @Fluent
 public final class FhirR4Condition extends FhirR4DomainResource {
 
@@ -24,147 +24,126 @@ public final class FhirR4Condition extends FhirR4DomainResource {
      * External Ids for this condition
      */
     @Generated
-    @JsonProperty(value = "identifier")
     private List identifier;
 
     /*
      * active | recurrence | relapse | inactive | remission | resolved
      */
     @Generated
-    @JsonProperty(value = "clinicalStatus")
     private FhirR4CodeableConcept clinicalStatus;
 
     /*
      * unconfirmed | provisional | differential | confirmed | refuted | entered-in-error
      */
     @Generated
-    @JsonProperty(value = "verificationStatus")
     private FhirR4CodeableConcept verificationStatus;
 
     /*
      * problem-list-item | encounter-diagnosis
      */
     @Generated
-    @JsonProperty(value = "category")
     private List category;
 
     /*
      * Subjective severity of condition
      */
     @Generated
-    @JsonProperty(value = "severity")
     private FhirR4CodeableConcept severity;
 
     /*
      * Identification of the condition, problem or diagnosis
      */
     @Generated
-    @JsonProperty(value = "code")
     private FhirR4CodeableConcept code;
 
     /*
      * Anatomical location, if relevant
      */
     @Generated
-    @JsonProperty(value = "bodySite")
     private List bodySite;
 
     /*
      * Encounter created as part of
      */
     @Generated
-    @JsonProperty(value = "encounter")
     private FhirR4Reference encounter;
 
     /*
-     * Estimated or actual date, date-time, or age
+     * Estimated or actual date,  date-time, or age
      */
     @Generated
-    @JsonProperty(value = "onsetDateTime")
     private String onsetDateTime;
 
     /*
-     * Estimated or actual date, date-time, or age
+     * Estimated or actual date,  date-time, or age
      */
     @Generated
-    @JsonProperty(value = "onsetAge")
     private FhirR4Quantity onsetAge;
 
     /*
-     * Estimated or actual date, date-time, or age
+     * Estimated or actual date,  date-time, or age
      */
     @Generated
-    @JsonProperty(value = "onsetPeriod")
     private FhirR4Period onsetPeriod;
 
     /*
-     * Estimated or actual date, date-time, or age
+     * Estimated or actual date,  date-time, or age
      */
     @Generated
-    @JsonProperty(value = "onsetRange")
     private FhirR4Range onsetRange;
 
     /*
-     * Estimated or actual date, date-time, or age
+     * Estimated or actual date,  date-time, or age
      */
     @Generated
-    @JsonProperty(value = "onsetString")
     private String onsetString;
 
     /*
      * When in resolution/remission
      */
     @Generated
-    @JsonProperty(value = "abatementDateTime")
     private String abatementDateTime;
 
     /*
      * When in resolution/remission
      */
     @Generated
-    @JsonProperty(value = "abatementAge")
     private FhirR4Quantity abatementAge;
 
     /*
      * When in resolution/remission
      */
     @Generated
-    @JsonProperty(value = "abatementPeriod")
     private FhirR4Period abatementPeriod;
 
     /*
      * When in resolution/remission
      */
     @Generated
-    @JsonProperty(value = "abatementRange")
     private FhirR4Range abatementRange;
 
     /*
      * When in resolution/remission
      */
     @Generated
-    @JsonProperty(value = "abatementString")
     private String abatementString;
 
     /*
      * Date record was first recorded
      */
     @Generated
-    @JsonProperty(value = "recordedDate")
     private String recordedDate;
 
     /*
      * stge/grade, usually assessed formally
      */
     @Generated
-    @JsonProperty(value = "stage")
     private List stage;
 
     /*
      * Additional information about the Condition
      */
     @Generated
-    @JsonProperty(value = "note")
     private List note;
 
     /**
@@ -173,9 +152,9 @@ public final class FhirR4Condition extends FhirR4DomainResource {
      * @param resourceType the resourceType value to set.
      */
     @Generated
-    @JsonCreator
-    public FhirR4Condition(@JsonProperty(value = "resourceType") String resourceType) {
+    public FhirR4Condition(String resourceType) {
         super(resourceType);
+        setResourceType("Condition");
     }
 
     /**
@@ -223,8 +202,7 @@ public FhirR4Condition setClinicalStatus(FhirR4CodeableConcept clinicalStatus) {
     }
 
     /**
-     * Get the verificationStatus property: unconfirmed | provisional | differential | confirmed | refuted |
-     * entered-in-error.
+     * Get the verificationStatus property: unconfirmed | provisional | differential | confirmed | refuted | entered-in-error.
      *
      * @return the verificationStatus value.
      */
@@ -234,8 +212,7 @@ public FhirR4CodeableConcept getVerificationStatus() {
     }
 
     /**
-     * Set the verificationStatus property: unconfirmed | provisional | differential | confirmed | refuted |
-     * entered-in-error.
+     * Set the verificationStatus property: unconfirmed | provisional | differential | confirmed | refuted | entered-in-error.
      *
      * @param verificationStatus the verificationStatus value to set.
      * @return the FhirR4Condition object itself.
@@ -357,7 +334,7 @@ public FhirR4Condition setEncounter(FhirR4Reference encounter) {
     }
 
     /**
-     * Get the onsetDateTime property: Estimated or actual date, date-time, or age.
+     * Get the onsetDateTime property: Estimated or actual date,  date-time, or age.
      *
      * @return the onsetDateTime value.
      */
@@ -367,7 +344,7 @@ public String getOnsetDateTime() {
     }
 
     /**
-     * Set the onsetDateTime property: Estimated or actual date, date-time, or age.
+     * Set the onsetDateTime property: Estimated or actual date,  date-time, or age.
      *
      * @param onsetDateTime the onsetDateTime value to set.
      * @return the FhirR4Condition object itself.
@@ -379,7 +356,7 @@ public FhirR4Condition setOnsetDateTime(String onsetDateTime) {
     }
 
     /**
-     * Get the onsetAge property: Estimated or actual date, date-time, or age.
+     * Get the onsetAge property: Estimated or actual date,  date-time, or age.
      *
      * @return the onsetAge value.
      */
@@ -389,7 +366,7 @@ public FhirR4Quantity getOnsetAge() {
     }
 
     /**
-     * Set the onsetAge property: Estimated or actual date, date-time, or age.
+     * Set the onsetAge property: Estimated or actual date,  date-time, or age.
      *
      * @param onsetAge the onsetAge value to set.
      * @return the FhirR4Condition object itself.
@@ -401,7 +378,7 @@ public FhirR4Condition setOnsetAge(FhirR4Quantity onsetAge) {
     }
 
     /**
-     * Get the onsetPeriod property: Estimated or actual date, date-time, or age.
+     * Get the onsetPeriod property: Estimated or actual date,  date-time, or age.
      *
      * @return the onsetPeriod value.
      */
@@ -411,7 +388,7 @@ public FhirR4Period getOnsetPeriod() {
     }
 
     /**
-     * Set the onsetPeriod property: Estimated or actual date, date-time, or age.
+     * Set the onsetPeriod property: Estimated or actual date,  date-time, or age.
      *
      * @param onsetPeriod the onsetPeriod value to set.
      * @return the FhirR4Condition object itself.
@@ -423,7 +400,7 @@ public FhirR4Condition setOnsetPeriod(FhirR4Period onsetPeriod) {
     }
 
     /**
-     * Get the onsetRange property: Estimated or actual date, date-time, or age.
+     * Get the onsetRange property: Estimated or actual date,  date-time, or age.
      *
      * @return the onsetRange value.
      */
@@ -433,7 +410,7 @@ public FhirR4Range getOnsetRange() {
     }
 
     /**
-     * Set the onsetRange property: Estimated or actual date, date-time, or age.
+     * Set the onsetRange property: Estimated or actual date,  date-time, or age.
      *
      * @param onsetRange the onsetRange value to set.
      * @return the FhirR4Condition object itself.
@@ -445,7 +422,7 @@ public FhirR4Condition setOnsetRange(FhirR4Range onsetRange) {
     }
 
     /**
-     * Get the onsetString property: Estimated or actual date, date-time, or age.
+     * Get the onsetString property: Estimated or actual date,  date-time, or age.
      *
      * @return the onsetString value.
      */
@@ -455,7 +432,7 @@ public String getOnsetString() {
     }
 
     /**
-     * Set the onsetString property: Estimated or actual date, date-time, or age.
+     * Set the onsetString property: Estimated or actual date,  date-time, or age.
      *
      * @param onsetString the onsetString value to set.
      * @return the FhirR4Condition object itself.
@@ -721,4 +698,202 @@ public FhirR4Condition setLanguage(String language) {
         super.setLanguage(language);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("resourceType", getResourceType());
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeJsonField("meta", getMeta());
+        jsonWriter.writeStringField("implicitRules", getImplicitRules());
+        jsonWriter.writeStringField("language", getLanguage());
+        jsonWriter.writeStringField("resourceType", getResourceType());
+        jsonWriter.writeJsonField("text", getText());
+        jsonWriter.writeArrayField("contained", getContained(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("modifierExtension", getModifierExtension(),
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("identifier", this.identifier, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("clinicalStatus", this.clinicalStatus);
+        jsonWriter.writeJsonField("verificationStatus", this.verificationStatus);
+        jsonWriter.writeArrayField("category", this.category, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("severity", this.severity);
+        jsonWriter.writeJsonField("code", this.code);
+        jsonWriter.writeArrayField("bodySite", this.bodySite, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("encounter", this.encounter);
+        jsonWriter.writeStringField("onsetDateTime", this.onsetDateTime);
+        jsonWriter.writeJsonField("onsetAge", this.onsetAge);
+        jsonWriter.writeJsonField("onsetPeriod", this.onsetPeriod);
+        jsonWriter.writeJsonField("onsetRange", this.onsetRange);
+        jsonWriter.writeStringField("onsetString", this.onsetString);
+        jsonWriter.writeStringField("abatementDateTime", this.abatementDateTime);
+        jsonWriter.writeJsonField("abatementAge", this.abatementAge);
+        jsonWriter.writeJsonField("abatementPeriod", this.abatementPeriod);
+        jsonWriter.writeJsonField("abatementRange", this.abatementRange);
+        jsonWriter.writeStringField("abatementString", this.abatementString);
+        jsonWriter.writeStringField("recordedDate", this.recordedDate);
+        jsonWriter.writeArrayField("stage", this.stage, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("note", this.note, (writer, element) -> writer.writeJson(element));
+        if (getAdditionalProperties() != null) {
+            for (Map.Entry additionalProperty : getAdditionalProperties().entrySet()) {
+                jsonWriter.writeUntypedField(additionalProperty.getKey(), additionalProperty.getValue());
+            }
+        }
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Condition from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Condition if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FhirR4Condition.
+     */
+    @Generated
+    public static FhirR4Condition fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String resourceType = null;
+            String id = null;
+            FhirR4Meta meta = null;
+            String implicitRules = null;
+            String language = null;
+            String resourceType = "Condition";
+            FhirR4Narrative text = null;
+            List contained = null;
+            List extension = null;
+            List modifierExtension = null;
+            List identifier = null;
+            FhirR4CodeableConcept clinicalStatus = null;
+            FhirR4CodeableConcept verificationStatus = null;
+            List category = null;
+            FhirR4CodeableConcept severity = null;
+            FhirR4CodeableConcept code = null;
+            List bodySite = null;
+            FhirR4Reference encounter = null;
+            String onsetDateTime = null;
+            FhirR4Quantity onsetAge = null;
+            FhirR4Period onsetPeriod = null;
+            FhirR4Range onsetRange = null;
+            String onsetString = null;
+            String abatementDateTime = null;
+            FhirR4Quantity abatementAge = null;
+            FhirR4Period abatementPeriod = null;
+            FhirR4Range abatementRange = null;
+            String abatementString = null;
+            String recordedDate = null;
+            List stage = null;
+            List note = null;
+            Map additionalProperties = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("resourceType".equals(fieldName)) {
+                    resourceType = reader.getString();
+                } else if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("meta".equals(fieldName)) {
+                    meta = FhirR4Meta.fromJson(reader);
+                } else if ("implicitRules".equals(fieldName)) {
+                    implicitRules = reader.getString();
+                } else if ("language".equals(fieldName)) {
+                    language = reader.getString();
+                } else if ("resourceType".equals(fieldName)) {
+                    resourceType = reader.getString();
+                } else if ("text".equals(fieldName)) {
+                    text = FhirR4Narrative.fromJson(reader);
+                } else if ("contained".equals(fieldName)) {
+                    contained = reader.readArray(reader1 -> FhirR4Resource.fromJson(reader1));
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("modifierExtension".equals(fieldName)) {
+                    modifierExtension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("identifier".equals(fieldName)) {
+                    identifier = reader.readArray(reader1 -> FhirR4Identifier.fromJson(reader1));
+                } else if ("clinicalStatus".equals(fieldName)) {
+                    clinicalStatus = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("verificationStatus".equals(fieldName)) {
+                    verificationStatus = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("category".equals(fieldName)) {
+                    category = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else if ("severity".equals(fieldName)) {
+                    severity = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("code".equals(fieldName)) {
+                    code = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("bodySite".equals(fieldName)) {
+                    bodySite = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else if ("encounter".equals(fieldName)) {
+                    encounter = FhirR4Reference.fromJson(reader);
+                } else if ("onsetDateTime".equals(fieldName)) {
+                    onsetDateTime = reader.getString();
+                } else if ("onsetAge".equals(fieldName)) {
+                    onsetAge = FhirR4Quantity.fromJson(reader);
+                } else if ("onsetPeriod".equals(fieldName)) {
+                    onsetPeriod = FhirR4Period.fromJson(reader);
+                } else if ("onsetRange".equals(fieldName)) {
+                    onsetRange = FhirR4Range.fromJson(reader);
+                } else if ("onsetString".equals(fieldName)) {
+                    onsetString = reader.getString();
+                } else if ("abatementDateTime".equals(fieldName)) {
+                    abatementDateTime = reader.getString();
+                } else if ("abatementAge".equals(fieldName)) {
+                    abatementAge = FhirR4Quantity.fromJson(reader);
+                } else if ("abatementPeriod".equals(fieldName)) {
+                    abatementPeriod = FhirR4Period.fromJson(reader);
+                } else if ("abatementRange".equals(fieldName)) {
+                    abatementRange = FhirR4Range.fromJson(reader);
+                } else if ("abatementString".equals(fieldName)) {
+                    abatementString = reader.getString();
+                } else if ("recordedDate".equals(fieldName)) {
+                    recordedDate = reader.getString();
+                } else if ("stage".equals(fieldName)) {
+                    stage = reader.readArray(reader1 -> FhirR4ConditionStage.fromJson(reader1));
+                } else if ("note".equals(fieldName)) {
+                    note = reader.readArray(reader1 -> FhirR4Annotation.fromJson(reader1));
+                } else {
+                    if (additionalProperties == null) {
+                        additionalProperties = new LinkedHashMap<>();
+                    }
+                    additionalProperties.put(fieldName, reader.readUntyped());
+                }
+            }
+            FhirR4Condition deserializedFhirR4Condition = new FhirR4Condition(resourceType);
+            deserializedFhirR4Condition.setId(id);
+            deserializedFhirR4Condition.setMeta(meta);
+            deserializedFhirR4Condition.setImplicitRules(implicitRules);
+            deserializedFhirR4Condition.setLanguage(language);
+            deserializedFhirR4Condition.setResourceType(resourceType);
+            deserializedFhirR4Condition.setText(text);
+            deserializedFhirR4Condition.setContained(contained);
+            deserializedFhirR4Condition.setExtension(extension);
+            deserializedFhirR4Condition.setModifierExtension(modifierExtension);
+            deserializedFhirR4Condition.identifier = identifier;
+            deserializedFhirR4Condition.clinicalStatus = clinicalStatus;
+            deserializedFhirR4Condition.verificationStatus = verificationStatus;
+            deserializedFhirR4Condition.category = category;
+            deserializedFhirR4Condition.severity = severity;
+            deserializedFhirR4Condition.code = code;
+            deserializedFhirR4Condition.bodySite = bodySite;
+            deserializedFhirR4Condition.encounter = encounter;
+            deserializedFhirR4Condition.onsetDateTime = onsetDateTime;
+            deserializedFhirR4Condition.onsetAge = onsetAge;
+            deserializedFhirR4Condition.onsetPeriod = onsetPeriod;
+            deserializedFhirR4Condition.onsetRange = onsetRange;
+            deserializedFhirR4Condition.onsetString = onsetString;
+            deserializedFhirR4Condition.abatementDateTime = abatementDateTime;
+            deserializedFhirR4Condition.abatementAge = abatementAge;
+            deserializedFhirR4Condition.abatementPeriod = abatementPeriod;
+            deserializedFhirR4Condition.abatementRange = abatementRange;
+            deserializedFhirR4Condition.abatementString = abatementString;
+            deserializedFhirR4Condition.recordedDate = recordedDate;
+            deserializedFhirR4Condition.stage = stage;
+            deserializedFhirR4Condition.note = note;
+            deserializedFhirR4Condition.setAdditionalProperties(additionalProperties);
+            return deserializedFhirR4Condition;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ConditionStage.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ConditionStage.java
index be2afb60eb59..1124e0eee9f7 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ConditionStage.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ConditionStage.java
@@ -5,27 +5,29 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Stage/grade, usually assessed formally
  * Based on [FHIR Condition.Stage](https://www.hl7.org/fhir/R4/condition.html).
  */
 @Fluent
-public final class FhirR4ConditionStage {
+public final class FhirR4ConditionStage implements JsonSerializable {
 
     /*
      * Simple summary (disease specific)
      */
     @Generated
-    @JsonProperty(value = "summary")
     private FhirR4CodeableConcept summary;
 
     /*
      * Kind of staging
      */
     @Generated
-    @JsonProperty(value = "type")
     private FhirR4CodeableConcept type;
 
     /**
@@ -78,4 +80,42 @@ public FhirR4ConditionStage setType(FhirR4CodeableConcept type) {
         this.type = type;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeJsonField("summary", this.summary);
+        jsonWriter.writeJsonField("type", this.type);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4ConditionStage from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4ConditionStage if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4ConditionStage.
+     */
+    @Generated
+    public static FhirR4ConditionStage fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4ConditionStage deserializedFhirR4ConditionStage = new FhirR4ConditionStage();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("summary".equals(fieldName)) {
+                    deserializedFhirR4ConditionStage.summary = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("type".equals(fieldName)) {
+                    deserializedFhirR4ConditionStage.type = FhirR4CodeableConcept.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4ConditionStage;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ContactDetail.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ContactDetail.java
index bc6c04305f21..f9d47c9fd7c9 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ContactDetail.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ContactDetail.java
@@ -5,7 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -18,14 +21,12 @@ public final class FhirR4ContactDetail extends FhirR4Element {
      * Name of an individual to contact
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * Contact details for individual or organization
      */
     @Generated
-    @JsonProperty(value = "telecom")
     private List telecom;
 
     /**
@@ -98,4 +99,51 @@ public FhirR4ContactDetail setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeArrayField("telecom", this.telecom, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4ContactDetail from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4ContactDetail if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4ContactDetail.
+     */
+    @Generated
+    public static FhirR4ContactDetail fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4ContactDetail deserializedFhirR4ContactDetail = new FhirR4ContactDetail();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    deserializedFhirR4ContactDetail.setId(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedFhirR4ContactDetail.setExtension(extension);
+                } else if ("name".equals(fieldName)) {
+                    deserializedFhirR4ContactDetail.name = reader.getString();
+                } else if ("telecom".equals(fieldName)) {
+                    List telecom
+                        = reader.readArray(reader1 -> FhirR4ContactPoint.fromJson(reader1));
+                    deserializedFhirR4ContactDetail.telecom = telecom;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4ContactDetail;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ContactPoint.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ContactPoint.java
index 3a201be4a97a..53d873d15c61 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ContactPoint.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ContactPoint.java
@@ -5,49 +5,47 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
- * Details for all kinds of technology mediated contact points for a person or organization, including telephone,
- * email, etc.
+ * Details for all kinds of technology mediated contact points for a person or organization, including telephone, email, etc.
  * See https://www.hl7.org/fhir/R4/datatypes.html#ContactPoint.
  */
 @Fluent
-public final class FhirR4ContactPoint {
+public final class FhirR4ContactPoint implements JsonSerializable {
 
     /*
      * phone | fax | email | pager | url | sms | other
      */
     @Generated
-    @JsonProperty(value = "system")
     private ContactPointSystem system;
 
     /*
      * The actual contact point details
      */
     @Generated
-    @JsonProperty(value = "value")
     private String value;
 
     /*
      * home | work | temp | old | mobile - purpose of this contact point
      */
     @Generated
-    @JsonProperty(value = "use")
     private ContactPointUse use;
 
     /*
      * Specify preferred order of use (1 = highest)
      */
     @Generated
-    @JsonProperty(value = "rank")
     private Integer rank;
 
     /*
      * Time period when the contact point was/is in use
      */
     @Generated
-    @JsonProperty(value = "period")
     private FhirR4Period period;
 
     /**
@@ -166,4 +164,51 @@ public FhirR4ContactPoint setPeriod(FhirR4Period period) {
         this.period = period;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("system", this.system == null ? null : this.system.toString());
+        jsonWriter.writeStringField("value", this.value);
+        jsonWriter.writeStringField("use", this.use == null ? null : this.use.toString());
+        jsonWriter.writeNumberField("rank", this.rank);
+        jsonWriter.writeJsonField("period", this.period);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4ContactPoint from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4ContactPoint if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4ContactPoint.
+     */
+    @Generated
+    public static FhirR4ContactPoint fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4ContactPoint deserializedFhirR4ContactPoint = new FhirR4ContactPoint();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("system".equals(fieldName)) {
+                    deserializedFhirR4ContactPoint.system = ContactPointSystem.fromString(reader.getString());
+                } else if ("value".equals(fieldName)) {
+                    deserializedFhirR4ContactPoint.value = reader.getString();
+                } else if ("use".equals(fieldName)) {
+                    deserializedFhirR4ContactPoint.use = ContactPointUse.fromString(reader.getString());
+                } else if ("rank".equals(fieldName)) {
+                    deserializedFhirR4ContactPoint.rank = reader.getNullable(JsonReader::getInt);
+                } else if ("period".equals(fieldName)) {
+                    deserializedFhirR4ContactPoint.period = FhirR4Period.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4ContactPoint;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4DomainResource.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4DomainResource.java
index 59b387537ddd..db193f66827b 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4DomainResource.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4DomainResource.java
@@ -5,27 +5,18 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * A resource with narrative, extensions, and contained resources
  * Based on [FHIR DomainResource](https://www.hl7.org/fhir/domainresource.html).
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "resourceType",
-    defaultImpl = FhirR4DomainResource.class)
-@JsonTypeName("Fhir_R4_DomainResource")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "Observation", value = FhirR4Observation.class),
-    @JsonSubTypes.Type(name = "Condition", value = FhirR4Condition.class),
-    @JsonSubTypes.Type(name = "ResearchStudy", value = FhirR4ResearchStudy.class) })
 @Fluent
 public class FhirR4DomainResource extends FhirR4Resource {
 
@@ -33,28 +24,24 @@ public class FhirR4DomainResource extends FhirR4Resource {
      * Text summary of the resource, for human interpretation
      */
     @Generated
-    @JsonProperty(value = "text")
     private FhirR4Narrative text;
 
     /*
      * Contained, inline Resources
      */
     @Generated
-    @JsonProperty(value = "contained")
     private List contained;
 
     /*
      * Additional Content defined by implementations
      */
     @Generated
-    @JsonProperty(value = "extension")
     private List extension;
 
     /*
      * Extensions that cannot be ignored
      */
     @Generated
-    @JsonProperty(value = "modifierExtension")
     private List modifierExtension;
 
     /**
@@ -63,9 +50,9 @@ public class FhirR4DomainResource extends FhirR4Resource {
      * @param resourceType the resourceType value to set.
      */
     @Generated
-    @JsonCreator
-    public FhirR4DomainResource(@JsonProperty(value = "resourceType") String resourceType) {
+    public FhirR4DomainResource(String resourceType) {
         super(resourceType);
+        setResourceType("Fhir_R4_DomainResource");
     }
 
     /**
@@ -195,4 +182,128 @@ public FhirR4DomainResource setLanguage(String language) {
         super.setLanguage(language);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("resourceType", getResourceType());
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeJsonField("meta", getMeta());
+        jsonWriter.writeStringField("implicitRules", getImplicitRules());
+        jsonWriter.writeStringField("language", getLanguage());
+        jsonWriter.writeStringField("resourceType", this.resourceType);
+        jsonWriter.writeJsonField("text", this.text);
+        jsonWriter.writeArrayField("contained", this.contained, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("extension", this.extension, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("modifierExtension", this.modifierExtension,
+            (writer, element) -> writer.writeJson(element));
+        if (getAdditionalProperties() != null) {
+            for (Map.Entry additionalProperty : getAdditionalProperties().entrySet()) {
+                jsonWriter.writeUntypedField(additionalProperty.getKey(), additionalProperty.getValue());
+            }
+        }
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4DomainResource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4DomainResource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FhirR4DomainResource.
+     */
+    @Generated
+    public static FhirR4DomainResource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("resourceType".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("Observation".equals(discriminatorValue)) {
+                    return FhirR4Observation.fromJson(readerToUse.reset());
+                } else if ("Condition".equals(discriminatorValue)) {
+                    return FhirR4Condition.fromJson(readerToUse.reset());
+                } else if ("ResearchStudy".equals(discriminatorValue)) {
+                    return FhirR4ResearchStudy.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static FhirR4DomainResource fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String resourceType = null;
+            String id = null;
+            FhirR4Meta meta = null;
+            String implicitRules = null;
+            String language = null;
+            String resourceType = null;
+            FhirR4Narrative text = null;
+            List contained = null;
+            List extension = null;
+            List modifierExtension = null;
+            Map additionalProperties = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("resourceType".equals(fieldName)) {
+                    resourceType = reader.getString();
+                } else if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("meta".equals(fieldName)) {
+                    meta = FhirR4Meta.fromJson(reader);
+                } else if ("implicitRules".equals(fieldName)) {
+                    implicitRules = reader.getString();
+                } else if ("language".equals(fieldName)) {
+                    language = reader.getString();
+                } else if ("resourceType".equals(fieldName)) {
+                    resourceType = reader.getString();
+                } else if ("text".equals(fieldName)) {
+                    text = FhirR4Narrative.fromJson(reader);
+                } else if ("contained".equals(fieldName)) {
+                    contained = reader.readArray(reader1 -> FhirR4Resource.fromJson(reader1));
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("modifierExtension".equals(fieldName)) {
+                    modifierExtension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else {
+                    if (additionalProperties == null) {
+                        additionalProperties = new LinkedHashMap<>();
+                    }
+                    additionalProperties.put(fieldName, reader.readUntyped());
+                }
+            }
+            FhirR4DomainResource deserializedFhirR4DomainResource = new FhirR4DomainResource(resourceType);
+            deserializedFhirR4DomainResource.setId(id);
+            deserializedFhirR4DomainResource.setMeta(meta);
+            deserializedFhirR4DomainResource.setImplicitRules(implicitRules);
+            deserializedFhirR4DomainResource.setLanguage(language);
+            deserializedFhirR4DomainResource.resourceType = resourceType;
+            deserializedFhirR4DomainResource.text = text;
+            deserializedFhirR4DomainResource.contained = contained;
+            deserializedFhirR4DomainResource.extension = extension;
+            deserializedFhirR4DomainResource.modifierExtension = modifierExtension;
+            deserializedFhirR4DomainResource.setAdditionalProperties(additionalProperties);
+            return deserializedFhirR4DomainResource;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Element.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Element.java
index 00c9ad755712..fb92dc6e520d 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Element.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Element.java
@@ -5,7 +5,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -13,20 +17,18 @@
  * Based on [FHIR Element](https://www.hl7.org/fhir/R4/element.html).
  */
 @Fluent
-public class FhirR4Element {
+public class FhirR4Element implements JsonSerializable {
 
     /*
      * Unique id for inter-element referencing
      */
     @Generated
-    @JsonProperty(value = "id")
     private String id;
 
     /*
      * Additional Content defined by implementations
      */
     @Generated
-    @JsonProperty(value = "extension")
     private List extension;
 
     /**
@@ -79,4 +81,43 @@ public FhirR4Element setExtension(List extension) {
         this.extension = extension;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeArrayField("extension", this.extension, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Element from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Element if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4Element.
+     */
+    @Generated
+    public static FhirR4Element fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4Element deserializedFhirR4Element = new FhirR4Element();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    deserializedFhirR4Element.id = reader.getString();
+                } else if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedFhirR4Element.extension = extension;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4Element;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extendible.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extendible.java
index 819eb1a598cc..31d075bdad53 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extendible.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extendible.java
@@ -5,34 +5,35 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Procedure information.
  */
 @Fluent
-public final class FhirR4Extendible {
+public final class FhirR4Extendible implements JsonSerializable {
 
     /*
      * Additional Content defined by implementations
      */
     @Generated
-    @JsonProperty(value = "extension")
     private List extension;
 
     /*
      * Procedure code
      */
     @Generated
-    @JsonProperty(value = "code")
     private FhirR4CodeableConcept code;
 
     /*
      * Procedure description
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /**
@@ -107,4 +108,46 @@ public FhirR4Extendible setDescription(String description) {
         this.description = description;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("extension", this.extension, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("code", this.code);
+        jsonWriter.writeStringField("description", this.description);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Extendible from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Extendible if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4Extendible.
+     */
+    @Generated
+    public static FhirR4Extendible fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4Extendible deserializedFhirR4Extendible = new FhirR4Extendible();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedFhirR4Extendible.extension = extension;
+                } else if ("code".equals(fieldName)) {
+                    deserializedFhirR4Extendible.code = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("description".equals(fieldName)) {
+                    deserializedFhirR4Extendible.description = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4Extendible;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extendible1.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extendible1.java
index 0fe98799cc40..e4bf8e677935 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extendible1.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extendible1.java
@@ -5,50 +5,33 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * An inference made by the Radiology Insights model regarding a patient.
- * - AgeMismatch
- * - SexMismatch
- * - LateralityDiscrepancy
- * - CompleteOrderDiscrepancy
- * - LimitedOrderDiscrepancy
- * - Finding
- * - CriticalResult
- * - FollowupRecommendation
- * - RadiologyProcedure
- * - FollowupCommunication.
+ *   - AgeMismatch
+ *   - SexMismatch
+ *   - LateralityDiscrepancy
+ *   - CompleteOrderDiscrepancy
+ *   - LimitedOrderDiscrepancy
+ *   - Finding
+ *   - CriticalResult
+ *   - FollowupRecommendation
+ *   - RadiologyProcedure
+ *   - FollowupCommunication.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "kind",
-    defaultImpl = FhirR4Extendible1.class)
-@JsonTypeName("Fhir_R4_Extendible1")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "ageMismatch", value = AgeMismatchInference.class),
-    @JsonSubTypes.Type(name = "sexMismatch", value = SexMismatchInference.class),
-    @JsonSubTypes.Type(name = "lateralityDiscrepancy", value = LateralityDiscrepancyInference.class),
-    @JsonSubTypes.Type(name = "completeOrderDiscrepancy", value = CompleteOrderDiscrepancyInference.class),
-    @JsonSubTypes.Type(name = "limitedOrderDiscrepancy", value = LimitedOrderDiscrepancyInference.class),
-    @JsonSubTypes.Type(name = "finding", value = FindingInference.class),
-    @JsonSubTypes.Type(name = "criticalResult", value = CriticalResultInference.class),
-    @JsonSubTypes.Type(name = "radiologyProcedure", value = RadiologyProcedureInference.class),
-    @JsonSubTypes.Type(name = "followupRecommendation", value = FollowupRecommendationInference.class),
-    @JsonSubTypes.Type(name = "followupCommunication", value = FollowupCommunicationInference.class) })
 @Immutable
-public class FhirR4Extendible1 {
+public class FhirR4Extendible1 implements JsonSerializable {
 
     /*
      * Additional Content defined by implementations
      */
     @Generated
-    @JsonProperty(value = "extension")
     private List extension;
 
     /**
@@ -56,6 +39,7 @@ public class FhirR4Extendible1 {
      */
     @Generated
     protected FhirR4Extendible1() {
+        this.kind = RadiologyInsightsInferenceType.fromString("Fhir_R4_Extendible1");
     }
 
     /**
@@ -67,4 +51,128 @@ protected FhirR4Extendible1() {
     public List getExtension() {
         return this.extension;
     }
+
+    /*
+     * Inference type.
+     */
+    @Generated
+    private RadiologyInsightsInferenceType kind;
+
+    /**
+     * Get the kind property: Inference type.
+     *
+     * @return the kind value.
+     */
+    @Generated
+    public RadiologyInsightsInferenceType getKind() {
+        return this.kind;
+    }
+
+    /**
+     * Set the kind property: Inference type.
+     *
+     * @param kind the kind value to set.
+     * @return the FhirR4Extendible1 object itself.
+     */
+    @Generated
+    FhirR4Extendible1 setKind(RadiologyInsightsInferenceType kind) {
+        this.kind = kind;
+        return this;
+    }
+
+    /**
+     * Set the extension property: Additional Content defined by implementations.
+     *
+     * @param extension the extension value to set.
+     * @return the FhirR4Extendible1 object itself.
+     */
+    @Generated
+    FhirR4Extendible1 setExtension(List extension) {
+        this.extension = extension;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString());
+        jsonWriter.writeArrayField("extension", this.extension, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Extendible1 from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Extendible1 if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4Extendible1.
+     */
+    @Generated
+    public static FhirR4Extendible1 fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("kind".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("ageMismatch".equals(discriminatorValue)) {
+                    return AgeMismatchInference.fromJson(readerToUse.reset());
+                } else if ("sexMismatch".equals(discriminatorValue)) {
+                    return SexMismatchInference.fromJson(readerToUse.reset());
+                } else if ("lateralityDiscrepancy".equals(discriminatorValue)) {
+                    return LateralityDiscrepancyInference.fromJson(readerToUse.reset());
+                } else if ("completeOrderDiscrepancy".equals(discriminatorValue)) {
+                    return CompleteOrderDiscrepancyInference.fromJson(readerToUse.reset());
+                } else if ("limitedOrderDiscrepancy".equals(discriminatorValue)) {
+                    return LimitedOrderDiscrepancyInference.fromJson(readerToUse.reset());
+                } else if ("finding".equals(discriminatorValue)) {
+                    return FindingInference.fromJson(readerToUse.reset());
+                } else if ("criticalResult".equals(discriminatorValue)) {
+                    return CriticalResultInference.fromJson(readerToUse.reset());
+                } else if ("radiologyProcedure".equals(discriminatorValue)) {
+                    return RadiologyProcedureInference.fromJson(readerToUse.reset());
+                } else if ("followupRecommendation".equals(discriminatorValue)) {
+                    return FollowupRecommendationInference.fromJson(readerToUse.reset());
+                } else if ("followupCommunication".equals(discriminatorValue)) {
+                    return FollowupCommunicationInference.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static FhirR4Extendible1 fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4Extendible1 deserializedFhirR4Extendible1 = new FhirR4Extendible1();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    deserializedFhirR4Extendible1.kind = RadiologyInsightsInferenceType.fromString(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedFhirR4Extendible1.extension = extension;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4Extendible1;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extendible2.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extendible2.java
index fcade011a4a5..f8a69df035a9 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extendible2.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extendible2.java
@@ -5,43 +5,42 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Finding reference for recommendation.
  */
 @Immutable
-public final class FhirR4Extendible2 {
+public final class FhirR4Extendible2 implements JsonSerializable {
 
     /*
      * Additional Content defined by implementations
      */
     @Generated
-    @JsonProperty(value = "extension")
     private List extension;
 
     /*
      * Finding linked to a recommendation.
      */
     @Generated
-    @JsonProperty(value = "finding")
     private FhirR4Observation finding;
 
     /*
      * Critical result linked to a recommendation.
      */
     @Generated
-    @JsonProperty(value = "criticalFinding")
     private CriticalResult criticalFinding;
 
     /*
      * Recommendation finding status.
      */
     @Generated
-    @JsonProperty(value = "recommendationFindingStatus")
-    private RecommendationFindingStatusType recommendationFindingStatus;
+    private final RecommendationFindingStatusType recommendationFindingStatus;
 
     /**
      * Creates an instance of FhirR4Extendible2 class.
@@ -49,9 +48,7 @@ public final class FhirR4Extendible2 {
      * @param recommendationFindingStatus the recommendationFindingStatus value to set.
      */
     @Generated
-    @JsonCreator
-    private FhirR4Extendible2(@JsonProperty(
-        value = "recommendationFindingStatus") RecommendationFindingStatusType recommendationFindingStatus) {
+    private FhirR4Extendible2(RecommendationFindingStatusType recommendationFindingStatus) {
         this.recommendationFindingStatus = recommendationFindingStatus;
     }
 
@@ -94,4 +91,57 @@ public CriticalResult getCriticalFinding() {
     public RecommendationFindingStatusType getRecommendationFindingStatus() {
         return this.recommendationFindingStatus;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("recommendationFindingStatus",
+            this.recommendationFindingStatus == null ? null : this.recommendationFindingStatus.toString());
+        jsonWriter.writeArrayField("extension", this.extension, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("finding", this.finding);
+        jsonWriter.writeJsonField("criticalFinding", this.criticalFinding);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Extendible2 from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Extendible2 if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FhirR4Extendible2.
+     */
+    @Generated
+    public static FhirR4Extendible2 fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RecommendationFindingStatusType recommendationFindingStatus = null;
+            List extension = null;
+            FhirR4Observation finding = null;
+            CriticalResult criticalFinding = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("recommendationFindingStatus".equals(fieldName)) {
+                    recommendationFindingStatus = RecommendationFindingStatusType.fromString(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("finding".equals(fieldName)) {
+                    finding = FhirR4Observation.fromJson(reader);
+                } else if ("criticalFinding".equals(fieldName)) {
+                    criticalFinding = CriticalResult.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            FhirR4Extendible2 deserializedFhirR4Extendible2 = new FhirR4Extendible2(recommendationFindingStatus);
+            deserializedFhirR4Extendible2.extension = extension;
+            deserializedFhirR4Extendible2.finding = finding;
+            deserializedFhirR4Extendible2.criticalFinding = criticalFinding;
+            return deserializedFhirR4Extendible2;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extension.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extension.java
index 16824d489ddc..eaa583d8045d 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extension.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Extension.java
@@ -5,8 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -20,91 +22,78 @@ public final class FhirR4Extension extends FhirR4Element {
      * Source of the definition for the extension code - a logical name or a URL.
      */
     @Generated
-    @JsonProperty(value = "url")
-    private String url;
+    private final String url;
 
     /*
      * Value as Quantity
      */
     @Generated
-    @JsonProperty(value = "valueQuantity")
     private FhirR4Quantity valueQuantity;
 
     /*
      * Value as CodeableConcept
      */
     @Generated
-    @JsonProperty(value = "valueCodeableConcept")
     private FhirR4CodeableConcept valueCodeableConcept;
 
     /*
      * Value as string
      */
     @Generated
-    @JsonProperty(value = "valueString")
     private String valueString;
 
     /*
      * Value as boolean
      */
     @Generated
-    @JsonProperty(value = "valueBoolean")
     private Boolean valueBoolean;
 
     /*
      * Value as integer
      */
     @Generated
-    @JsonProperty(value = "valueInteger")
     private Integer valueInteger;
 
     /*
      * Value as Range.
      */
     @Generated
-    @JsonProperty(value = "valueRange")
     private FhirR4Range valueRange;
 
     /*
      * Value as Ratio.
      */
     @Generated
-    @JsonProperty(value = "valueRatio")
     private FhirR4Ratio valueRatio;
 
     /*
      * Value as SampledData.
      */
     @Generated
-    @JsonProperty(value = "valueSampledData")
     private FhirR4SampledData valueSampledData;
 
     /*
      * Value as time (hh:mm:ss)
      */
     @Generated
-    @JsonProperty(value = "valueTime")
     private String valueTime;
 
     /*
      * Value as dateTime.
      */
     @Generated
-    @JsonProperty(value = "valueDateTime")
     private String valueDateTime;
 
     /*
      * Value as Period.
      */
     @Generated
-    @JsonProperty(value = "valuePeriod")
     private FhirR4Period valuePeriod;
 
     /*
      * Value as reference.
      */
     @Generated
-    @JsonProperty(value = "valueReference")
     private FhirR4Reference valueReference;
 
     /**
@@ -113,8 +102,7 @@ public final class FhirR4Extension extends FhirR4Element {
      * @param url the url value to set.
      */
     @Generated
-    @JsonCreator
-    public FhirR4Extension(@JsonProperty(value = "url") String url) {
+    public FhirR4Extension(String url) {
         this.url = url;
     }
 
@@ -411,4 +399,111 @@ public FhirR4Extension setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("url", this.url);
+        jsonWriter.writeJsonField("valueQuantity", this.valueQuantity);
+        jsonWriter.writeJsonField("valueCodeableConcept", this.valueCodeableConcept);
+        jsonWriter.writeStringField("valueString", this.valueString);
+        jsonWriter.writeBooleanField("valueBoolean", this.valueBoolean);
+        jsonWriter.writeNumberField("valueInteger", this.valueInteger);
+        jsonWriter.writeJsonField("valueRange", this.valueRange);
+        jsonWriter.writeJsonField("valueRatio", this.valueRatio);
+        jsonWriter.writeJsonField("valueSampledData", this.valueSampledData);
+        jsonWriter.writeStringField("valueTime", this.valueTime);
+        jsonWriter.writeStringField("valueDateTime", this.valueDateTime);
+        jsonWriter.writeJsonField("valuePeriod", this.valuePeriod);
+        jsonWriter.writeJsonField("valueReference", this.valueReference);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Extension from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Extension if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FhirR4Extension.
+     */
+    @Generated
+    public static FhirR4Extension fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            List extension = null;
+            String url = null;
+            FhirR4Quantity valueQuantity = null;
+            FhirR4CodeableConcept valueCodeableConcept = null;
+            String valueString = null;
+            Boolean valueBoolean = null;
+            Integer valueInteger = null;
+            FhirR4Range valueRange = null;
+            FhirR4Ratio valueRatio = null;
+            FhirR4SampledData valueSampledData = null;
+            String valueTime = null;
+            String valueDateTime = null;
+            FhirR4Period valuePeriod = null;
+            FhirR4Reference valueReference = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("url".equals(fieldName)) {
+                    url = reader.getString();
+                } else if ("valueQuantity".equals(fieldName)) {
+                    valueQuantity = FhirR4Quantity.fromJson(reader);
+                } else if ("valueCodeableConcept".equals(fieldName)) {
+                    valueCodeableConcept = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("valueString".equals(fieldName)) {
+                    valueString = reader.getString();
+                } else if ("valueBoolean".equals(fieldName)) {
+                    valueBoolean = reader.getNullable(JsonReader::getBoolean);
+                } else if ("valueInteger".equals(fieldName)) {
+                    valueInteger = reader.getNullable(JsonReader::getInt);
+                } else if ("valueRange".equals(fieldName)) {
+                    valueRange = FhirR4Range.fromJson(reader);
+                } else if ("valueRatio".equals(fieldName)) {
+                    valueRatio = FhirR4Ratio.fromJson(reader);
+                } else if ("valueSampledData".equals(fieldName)) {
+                    valueSampledData = FhirR4SampledData.fromJson(reader);
+                } else if ("valueTime".equals(fieldName)) {
+                    valueTime = reader.getString();
+                } else if ("valueDateTime".equals(fieldName)) {
+                    valueDateTime = reader.getString();
+                } else if ("valuePeriod".equals(fieldName)) {
+                    valuePeriod = FhirR4Period.fromJson(reader);
+                } else if ("valueReference".equals(fieldName)) {
+                    valueReference = FhirR4Reference.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            FhirR4Extension deserializedFhirR4Extension = new FhirR4Extension(url);
+            deserializedFhirR4Extension.setId(id);
+            deserializedFhirR4Extension.setExtension(extension);
+            deserializedFhirR4Extension.valueQuantity = valueQuantity;
+            deserializedFhirR4Extension.valueCodeableConcept = valueCodeableConcept;
+            deserializedFhirR4Extension.valueString = valueString;
+            deserializedFhirR4Extension.valueBoolean = valueBoolean;
+            deserializedFhirR4Extension.valueInteger = valueInteger;
+            deserializedFhirR4Extension.valueRange = valueRange;
+            deserializedFhirR4Extension.valueRatio = valueRatio;
+            deserializedFhirR4Extension.valueSampledData = valueSampledData;
+            deserializedFhirR4Extension.valueTime = valueTime;
+            deserializedFhirR4Extension.valueDateTime = valueDateTime;
+            deserializedFhirR4Extension.valuePeriod = valuePeriod;
+            deserializedFhirR4Extension.valueReference = valueReference;
+            return deserializedFhirR4Extension;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Identifier.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Identifier.java
index 6040463313e6..de2139128c7d 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Identifier.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Identifier.java
@@ -5,7 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -19,42 +22,36 @@ public final class FhirR4Identifier extends FhirR4Element {
      * usual | official | temp | secondary | old (If known)
      */
     @Generated
-    @JsonProperty(value = "use")
     private String use;
 
     /*
      * Description of identifier
      */
     @Generated
-    @JsonProperty(value = "type")
     private FhirR4CodeableConcept type;
 
     /*
      * The namespace for the identifier value
      */
     @Generated
-    @JsonProperty(value = "system")
     private String system;
 
     /*
      * The value that is unique
      */
     @Generated
-    @JsonProperty(value = "value")
     private String value;
 
     /*
      * Time period when id is/was valid for use
      */
     @Generated
-    @JsonProperty(value = "period")
     private FhirR4Period period;
 
     /*
      * Organization that issued id (may be just text)
      */
     @Generated
-    @JsonProperty(value = "assigner")
     private FhirR4Reference assigner;
 
     /**
@@ -215,4 +212,61 @@ public FhirR4Identifier setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("use", this.use);
+        jsonWriter.writeJsonField("type", this.type);
+        jsonWriter.writeStringField("system", this.system);
+        jsonWriter.writeStringField("value", this.value);
+        jsonWriter.writeJsonField("period", this.period);
+        jsonWriter.writeJsonField("assigner", this.assigner);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Identifier from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Identifier if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4Identifier.
+     */
+    @Generated
+    public static FhirR4Identifier fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4Identifier deserializedFhirR4Identifier = new FhirR4Identifier();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    deserializedFhirR4Identifier.setId(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedFhirR4Identifier.setExtension(extension);
+                } else if ("use".equals(fieldName)) {
+                    deserializedFhirR4Identifier.use = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    deserializedFhirR4Identifier.type = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("system".equals(fieldName)) {
+                    deserializedFhirR4Identifier.system = reader.getString();
+                } else if ("value".equals(fieldName)) {
+                    deserializedFhirR4Identifier.value = reader.getString();
+                } else if ("period".equals(fieldName)) {
+                    deserializedFhirR4Identifier.period = FhirR4Period.fromJson(reader);
+                } else if ("assigner".equals(fieldName)) {
+                    deserializedFhirR4Identifier.assigner = FhirR4Reference.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4Identifier;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Meta.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Meta.java
index 05e0dd6c1344..d94bd46cf9f0 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Meta.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Meta.java
@@ -5,7 +5,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -13,55 +17,42 @@
  * Based on [FHIR Meta](https://www.hl7.org/fhir/R4/resource.html#Meta).
  */
 @Fluent
-public final class FhirR4Meta {
+public final class FhirR4Meta implements JsonSerializable {
 
     /*
-     * The version specific identifier, as it appears in the version portion of the URL. This value changes when the
-     * resource is created, updated, or deleted.
+     * The version specific identifier, as it appears in the version portion of the URL. This value changes when the resource is created, updated, or deleted.
      */
     @Generated
-    @JsonProperty(value = "versionId")
     private String versionId;
 
     /*
      * When the resource last changed - e.g. when the version changed.
      */
     @Generated
-    @JsonProperty(value = "lastUpdated")
     private String lastUpdated;
 
     /*
-     * A uri that identifies the source system of the resource. This provides a minimal amount of Provenance
-     * information that can be used to track or differentiate the source of information in the resource. The source may
-     * identify another FHIR server, document, message, database, etc.
+     * A uri that identifies the source system of the resource. This provides a minimal amount of Provenance information that can be used to track or differentiate the source of information in the resource. The source may identify another FHIR server, document, message, database, etc.
      */
     @Generated
-    @JsonProperty(value = "source")
     private String source;
 
     /*
-     * A list of profiles (references to [StructureDefinition](https://www.hl7.org/fhir/structuredefinition.html)
-     * resources) that this resource claims to conform to. The URL is a reference to
-     * [StructureDefinition.url](https://www.hl7.org/fhir/structuredefinition-definitions.html#StructureDefinition.url).
+     * A list of profiles (references to [StructureDefinition](https://www.hl7.org/fhir/structuredefinition.html) resources) that this resource claims to conform to. The URL is a reference to [StructureDefinition.url](https://www.hl7.org/fhir/structuredefinition-definitions.html#StructureDefinition.url).
      */
     @Generated
-    @JsonProperty(value = "profile")
     private List profile;
 
     /*
-     * Security labels applied to this resource. These tags connect specific resources to the overall security policy
-     * and infrastructure.
+     * Security labels applied to this resource. These tags connect specific resources to the overall security policy and infrastructure.
      */
     @Generated
-    @JsonProperty(value = "security")
     private List security;
 
     /*
-     * Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and
-     * workflow, and applications are not required to consider the tags when interpreting the meaning of a resource.
+     * Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and workflow, and applications are not required to consider the tags when interpreting the meaning of a resource.
      */
     @Generated
-    @JsonProperty(value = "tag")
     private List tag;
 
     /**
@@ -72,8 +63,7 @@ public FhirR4Meta() {
     }
 
     /**
-     * Get the versionId property: The version specific identifier, as it appears in the version portion of the URL.
-     * This value changes when the resource is created, updated, or deleted.
+     * Get the versionId property: The version specific identifier, as it appears in the version portion of the URL. This value changes when the resource is created, updated, or deleted.
      *
      * @return the versionId value.
      */
@@ -83,8 +73,7 @@ public String getVersionId() {
     }
 
     /**
-     * Set the versionId property: The version specific identifier, as it appears in the version portion of the URL.
-     * This value changes when the resource is created, updated, or deleted.
+     * Set the versionId property: The version specific identifier, as it appears in the version portion of the URL. This value changes when the resource is created, updated, or deleted.
      *
      * @param versionId the versionId value to set.
      * @return the FhirR4Meta object itself.
@@ -118,9 +107,7 @@ public FhirR4Meta setLastUpdated(String lastUpdated) {
     }
 
     /**
-     * Get the source property: A uri that identifies the source system of the resource. This provides a minimal amount
-     * of Provenance information that can be used to track or differentiate the source of information in the resource.
-     * The source may identify another FHIR server, document, message, database, etc.
+     * Get the source property: A uri that identifies the source system of the resource. This provides a minimal amount of Provenance information that can be used to track or differentiate the source of information in the resource. The source may identify another FHIR server, document, message, database, etc.
      *
      * @return the source value.
      */
@@ -130,9 +117,7 @@ public String getSource() {
     }
 
     /**
-     * Set the source property: A uri that identifies the source system of the resource. This provides a minimal amount
-     * of Provenance information that can be used to track or differentiate the source of information in the resource.
-     * The source may identify another FHIR server, document, message, database, etc.
+     * Set the source property: A uri that identifies the source system of the resource. This provides a minimal amount of Provenance information that can be used to track or differentiate the source of information in the resource. The source may identify another FHIR server, document, message, database, etc.
      *
      * @param source the source value to set.
      * @return the FhirR4Meta object itself.
@@ -144,10 +129,7 @@ public FhirR4Meta setSource(String source) {
     }
 
     /**
-     * Get the profile property: A list of profiles (references to
-     * [StructureDefinition](https://www.hl7.org/fhir/structuredefinition.html) resources) that this resource claims to
-     * conform to. The URL is a reference to
-     * [StructureDefinition.url](https://www.hl7.org/fhir/structuredefinition-definitions.html#StructureDefinition.url).
+     * Get the profile property: A list of profiles (references to [StructureDefinition](https://www.hl7.org/fhir/structuredefinition.html) resources) that this resource claims to conform to. The URL is a reference to [StructureDefinition.url](https://www.hl7.org/fhir/structuredefinition-definitions.html#StructureDefinition.url).
      *
      * @return the profile value.
      */
@@ -157,10 +139,7 @@ public List getProfile() {
     }
 
     /**
-     * Set the profile property: A list of profiles (references to
-     * [StructureDefinition](https://www.hl7.org/fhir/structuredefinition.html) resources) that this resource claims to
-     * conform to. The URL is a reference to
-     * [StructureDefinition.url](https://www.hl7.org/fhir/structuredefinition-definitions.html#StructureDefinition.url).
+     * Set the profile property: A list of profiles (references to [StructureDefinition](https://www.hl7.org/fhir/structuredefinition.html) resources) that this resource claims to conform to. The URL is a reference to [StructureDefinition.url](https://www.hl7.org/fhir/structuredefinition-definitions.html#StructureDefinition.url).
      *
      * @param profile the profile value to set.
      * @return the FhirR4Meta object itself.
@@ -172,8 +151,7 @@ public FhirR4Meta setProfile(List profile) {
     }
 
     /**
-     * Get the security property: Security labels applied to this resource. These tags connect specific resources to
-     * the overall security policy and infrastructure.
+     * Get the security property: Security labels applied to this resource. These tags connect specific resources to the overall security policy and infrastructure.
      *
      * @return the security value.
      */
@@ -183,8 +161,7 @@ public List getSecurity() {
     }
 
     /**
-     * Set the security property: Security labels applied to this resource. These tags connect specific resources to
-     * the overall security policy and infrastructure.
+     * Set the security property: Security labels applied to this resource. These tags connect specific resources to the overall security policy and infrastructure.
      *
      * @param security the security value to set.
      * @return the FhirR4Meta object itself.
@@ -196,9 +173,7 @@ public FhirR4Meta setSecurity(List security) {
     }
 
     /**
-     * Get the tag property: Tags applied to this resource. Tags are intended to be used to identify and relate
-     * resources to process and workflow, and applications are not required to consider the tags when interpreting the
-     * meaning of a resource.
+     * Get the tag property: Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and workflow, and applications are not required to consider the tags when interpreting the meaning of a resource.
      *
      * @return the tag value.
      */
@@ -208,9 +183,7 @@ public List getTag() {
     }
 
     /**
-     * Set the tag property: Tags applied to this resource. Tags are intended to be used to identify and relate
-     * resources to process and workflow, and applications are not required to consider the tags when interpreting the
-     * meaning of a resource.
+     * Set the tag property: Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and workflow, and applications are not required to consider the tags when interpreting the meaning of a resource.
      *
      * @param tag the tag value to set.
      * @return the FhirR4Meta object itself.
@@ -220,4 +193,57 @@ public FhirR4Meta setTag(List tag) {
         this.tag = tag;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("versionId", this.versionId);
+        jsonWriter.writeStringField("lastUpdated", this.lastUpdated);
+        jsonWriter.writeStringField("source", this.source);
+        jsonWriter.writeArrayField("profile", this.profile, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("security", this.security, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("tag", this.tag, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Meta from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Meta if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4Meta.
+     */
+    @Generated
+    public static FhirR4Meta fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4Meta deserializedFhirR4Meta = new FhirR4Meta();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("versionId".equals(fieldName)) {
+                    deserializedFhirR4Meta.versionId = reader.getString();
+                } else if ("lastUpdated".equals(fieldName)) {
+                    deserializedFhirR4Meta.lastUpdated = reader.getString();
+                } else if ("source".equals(fieldName)) {
+                    deserializedFhirR4Meta.source = reader.getString();
+                } else if ("profile".equals(fieldName)) {
+                    List profile = reader.readArray(reader1 -> reader1.getString());
+                    deserializedFhirR4Meta.profile = profile;
+                } else if ("security".equals(fieldName)) {
+                    List security = reader.readArray(reader1 -> FhirR4Coding.fromJson(reader1));
+                    deserializedFhirR4Meta.security = security;
+                } else if ("tag".equals(fieldName)) {
+                    List tag = reader.readArray(reader1 -> FhirR4Coding.fromJson(reader1));
+                    deserializedFhirR4Meta.tag = tag;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4Meta;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Narrative.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Narrative.java
index 420ac73d514a..129af5cb3c5e 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Narrative.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Narrative.java
@@ -5,14 +5,14 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
- * Any resource that is a [DomainResource](https://www.hl7.org/fhir/domainresource.html) may include a human-readable
- * narrative that contains a summary of the resource and may be used to represent the content of the resource to a
- * human.
+ * Any resource that is a [DomainResource](https://www.hl7.org/fhir/domainresource.html) may include a human-readable narrative that contains a summary of the resource and may be used to represent the content of the resource to a human.
  * Based on [FHIR Narrative](https://www.hl7.org/fhir/R4/narrative.html#Narrative).
  */
 @Fluent
@@ -22,15 +22,13 @@ public final class FhirR4Narrative extends FhirR4Element {
      * generated, extensions, additional, empty
      */
     @Generated
-    @JsonProperty(value = "status")
-    private String status;
+    private final String status;
 
     /*
      * xhtml
      */
     @Generated
-    @JsonProperty(value = "div")
-    private String div;
+    private final String div;
 
     /**
      * Creates an instance of FhirR4Narrative class.
@@ -39,8 +37,7 @@ public final class FhirR4Narrative extends FhirR4Element {
      * @param div the div value to set.
      */
     @Generated
-    @JsonCreator
-    public FhirR4Narrative(@JsonProperty(value = "status") String status, @JsonProperty(value = "div") String div) {
+    public FhirR4Narrative(String status, String div) {
         this.status = status;
         this.div = div;
     }
@@ -84,4 +81,55 @@ public FhirR4Narrative setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("status", this.status);
+        jsonWriter.writeStringField("div", this.div);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Narrative from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Narrative if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FhirR4Narrative.
+     */
+    @Generated
+    public static FhirR4Narrative fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            List extension = null;
+            String status = null;
+            String div = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("status".equals(fieldName)) {
+                    status = reader.getString();
+                } else if ("div".equals(fieldName)) {
+                    div = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            FhirR4Narrative deserializedFhirR4Narrative = new FhirR4Narrative(status, div);
+            deserializedFhirR4Narrative.setId(id);
+            deserializedFhirR4Narrative.setExtension(extension);
+            return deserializedFhirR4Narrative;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Observation.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Observation.java
index a90efbaa81b3..d07d947609f8 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Observation.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Observation.java
@@ -5,18 +5,18 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Detailed information about observations
  * Based on [FHIR Observation](https://www.hl7.org/fhir/R4/observation.html).
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "resourceType")
-@JsonTypeName("Observation")
 @Fluent
 public final class FhirR4Observation extends FhirR4DomainResource {
 
@@ -24,210 +24,180 @@ public final class FhirR4Observation extends FhirR4DomainResource {
      * Business Identifier for observation
      */
     @Generated
-    @JsonProperty(value = "identifier")
     private List identifier;
 
     /*
      * registered | preliminary | final | amended +
      */
     @Generated
-    @JsonProperty(value = "status")
-    private ObservationStatusCodeType status;
+    private final ObservationStatusCodeType status;
 
     /*
-     * Classification of type of observation
+     * Classification of  type of observation
      */
     @Generated
-    @JsonProperty(value = "category")
     private List category;
 
     /*
      * Type of observation (code / type)
      */
     @Generated
-    @JsonProperty(value = "code")
-    private FhirR4CodeableConcept code;
+    private final FhirR4CodeableConcept code;
 
     /*
      * Who and/or what the observation is about
      */
     @Generated
-    @JsonProperty(value = "subject")
     private FhirR4Reference subject;
 
     /*
      * Healthcare event during which this observation is made
      */
     @Generated
-    @JsonProperty(value = "encounter")
     private FhirR4Reference encounter;
 
     /*
      * Clinically relevant time/time-period for observation
      */
     @Generated
-    @JsonProperty(value = "effectiveDateTime")
     private String effectiveDateTime;
 
     /*
      * Clinically relevant time/time-period for observation
      */
     @Generated
-    @JsonProperty(value = "effectivePeriod")
     private FhirR4Period effectivePeriod;
 
     /*
      * Clinically relevant time/time-period for observation
      */
     @Generated
-    @JsonProperty(value = "effectiveInstant")
     private String effectiveInstant;
 
     /*
      * Date/Time this version was made available
      */
     @Generated
-    @JsonProperty(value = "issued")
     private String issued;
 
     /*
      * Actual result
      */
     @Generated
-    @JsonProperty(value = "valueQuantity")
     private FhirR4Quantity valueQuantity;
 
     /*
      * Actual result
      */
     @Generated
-    @JsonProperty(value = "valueCodeableConcept")
     private FhirR4CodeableConcept valueCodeableConcept;
 
     /*
      * Actual result
      */
     @Generated
-    @JsonProperty(value = "valueString")
     private String valueString;
 
     /*
      * Actual result
      */
     @Generated
-    @JsonProperty(value = "valueBoolean")
     private Boolean valueBoolean;
 
     /*
      * Actual result
      */
     @Generated
-    @JsonProperty(value = "valueInteger")
     private Integer valueInteger;
 
     /*
      * Actual result
      */
     @Generated
-    @JsonProperty(value = "valueRange")
     private FhirR4Range valueRange;
 
     /*
      * Actual result
      */
     @Generated
-    @JsonProperty(value = "valueRatio")
     private FhirR4Ratio valueRatio;
 
     /*
      * Actual result
      */
     @Generated
-    @JsonProperty(value = "valueSampledData")
     private FhirR4SampledData valueSampledData;
 
     /*
      * Actual result
      */
     @Generated
-    @JsonProperty(value = "valueTime")
     private String valueTime;
 
     /*
      * Actual result
      */
     @Generated
-    @JsonProperty(value = "valueDateTime")
     private String valueDateTime;
 
     /*
      * Actual result
      */
     @Generated
-    @JsonProperty(value = "valuePeriod")
     private FhirR4Period valuePeriod;
 
     /*
      * Why the result is missing
      */
     @Generated
-    @JsonProperty(value = "dataAbsentReason")
     private FhirR4CodeableConcept dataAbsentReason;
 
     /*
      * High, low, normal, etc.
      */
     @Generated
-    @JsonProperty(value = "interpretation")
     private List interpretation;
 
     /*
      * Comments about the observation
      */
     @Generated
-    @JsonProperty(value = "note")
     private List note;
 
     /*
      * Observed body part
      */
     @Generated
-    @JsonProperty(value = "bodySite")
     private FhirR4CodeableConcept bodySite;
 
     /*
      * How it was done
      */
     @Generated
-    @JsonProperty(value = "method")
     private FhirR4CodeableConcept method;
 
     /*
      * Provides guide for interpretation
      */
     @Generated
-    @JsonProperty(value = "referenceRange")
     private List referenceRange;
 
     /*
      * Related resource that belongs to the Observation group
      */
     @Generated
-    @JsonProperty(value = "hasMember")
     private List hasMember;
 
     /*
      * Related measurements the observation is made from
      */
     @Generated
-    @JsonProperty(value = "derivedFrom")
     private List derivedFrom;
 
     /*
      * Component results
      */
     @Generated
-    @JsonProperty(value = "component")
     private List component;
 
     /**
@@ -238,11 +208,9 @@ public final class FhirR4Observation extends FhirR4DomainResource {
      * @param code the code value to set.
      */
     @Generated
-    @JsonCreator
-    public FhirR4Observation(@JsonProperty(value = "resourceType") String resourceType,
-        @JsonProperty(value = "status") ObservationStatusCodeType status,
-        @JsonProperty(value = "code") FhirR4CodeableConcept code) {
+    public FhirR4Observation(String resourceType, ObservationStatusCodeType status, FhirR4CodeableConcept code) {
         super(resourceType);
+        setResourceType("Observation");
         this.status = status;
         this.code = code;
     }
@@ -280,7 +248,7 @@ public ObservationStatusCodeType getStatus() {
     }
 
     /**
-     * Get the category property: Classification of type of observation.
+     * Get the category property: Classification of  type of observation.
      *
      * @return the category value.
      */
@@ -290,7 +258,7 @@ public List getCategory() {
     }
 
     /**
-     * Set the category property: Classification of type of observation.
+     * Set the category property: Classification of  type of observation.
      *
      * @param category the category value to set.
      * @return the FhirR4Observation object itself.
@@ -962,4 +930,247 @@ public FhirR4Observation setLanguage(String language) {
         super.setLanguage(language);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("resourceType", getResourceType());
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeJsonField("meta", getMeta());
+        jsonWriter.writeStringField("implicitRules", getImplicitRules());
+        jsonWriter.writeStringField("language", getLanguage());
+        jsonWriter.writeStringField("resourceType", getResourceType());
+        jsonWriter.writeJsonField("text", getText());
+        jsonWriter.writeArrayField("contained", getContained(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("modifierExtension", getModifierExtension(),
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        jsonWriter.writeJsonField("code", this.code);
+        jsonWriter.writeArrayField("identifier", this.identifier, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("category", this.category, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("subject", this.subject);
+        jsonWriter.writeJsonField("encounter", this.encounter);
+        jsonWriter.writeStringField("effectiveDateTime", this.effectiveDateTime);
+        jsonWriter.writeJsonField("effectivePeriod", this.effectivePeriod);
+        jsonWriter.writeStringField("effectiveInstant", this.effectiveInstant);
+        jsonWriter.writeStringField("issued", this.issued);
+        jsonWriter.writeJsonField("valueQuantity", this.valueQuantity);
+        jsonWriter.writeJsonField("valueCodeableConcept", this.valueCodeableConcept);
+        jsonWriter.writeStringField("valueString", this.valueString);
+        jsonWriter.writeBooleanField("valueBoolean", this.valueBoolean);
+        jsonWriter.writeNumberField("valueInteger", this.valueInteger);
+        jsonWriter.writeJsonField("valueRange", this.valueRange);
+        jsonWriter.writeJsonField("valueRatio", this.valueRatio);
+        jsonWriter.writeJsonField("valueSampledData", this.valueSampledData);
+        jsonWriter.writeStringField("valueTime", this.valueTime);
+        jsonWriter.writeStringField("valueDateTime", this.valueDateTime);
+        jsonWriter.writeJsonField("valuePeriod", this.valuePeriod);
+        jsonWriter.writeJsonField("dataAbsentReason", this.dataAbsentReason);
+        jsonWriter.writeArrayField("interpretation", this.interpretation,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("note", this.note, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("bodySite", this.bodySite);
+        jsonWriter.writeJsonField("method", this.method);
+        jsonWriter.writeArrayField("referenceRange", this.referenceRange,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("hasMember", this.hasMember, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("derivedFrom", this.derivedFrom, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("component", this.component, (writer, element) -> writer.writeJson(element));
+        if (getAdditionalProperties() != null) {
+            for (Map.Entry additionalProperty : getAdditionalProperties().entrySet()) {
+                jsonWriter.writeUntypedField(additionalProperty.getKey(), additionalProperty.getValue());
+            }
+        }
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Observation from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Observation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FhirR4Observation.
+     */
+    @Generated
+    public static FhirR4Observation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String resourceType = null;
+            String id = null;
+            FhirR4Meta meta = null;
+            String implicitRules = null;
+            String language = null;
+            String resourceType = "Observation";
+            FhirR4Narrative text = null;
+            List contained = null;
+            List extension = null;
+            List modifierExtension = null;
+            ObservationStatusCodeType status = null;
+            FhirR4CodeableConcept code = null;
+            List identifier = null;
+            List category = null;
+            FhirR4Reference subject = null;
+            FhirR4Reference encounter = null;
+            String effectiveDateTime = null;
+            FhirR4Period effectivePeriod = null;
+            String effectiveInstant = null;
+            String issued = null;
+            FhirR4Quantity valueQuantity = null;
+            FhirR4CodeableConcept valueCodeableConcept = null;
+            String valueString = null;
+            Boolean valueBoolean = null;
+            Integer valueInteger = null;
+            FhirR4Range valueRange = null;
+            FhirR4Ratio valueRatio = null;
+            FhirR4SampledData valueSampledData = null;
+            String valueTime = null;
+            String valueDateTime = null;
+            FhirR4Period valuePeriod = null;
+            FhirR4CodeableConcept dataAbsentReason = null;
+            List interpretation = null;
+            List note = null;
+            FhirR4CodeableConcept bodySite = null;
+            FhirR4CodeableConcept method = null;
+            List referenceRange = null;
+            List hasMember = null;
+            List derivedFrom = null;
+            List component = null;
+            Map additionalProperties = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("resourceType".equals(fieldName)) {
+                    resourceType = reader.getString();
+                } else if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("meta".equals(fieldName)) {
+                    meta = FhirR4Meta.fromJson(reader);
+                } else if ("implicitRules".equals(fieldName)) {
+                    implicitRules = reader.getString();
+                } else if ("language".equals(fieldName)) {
+                    language = reader.getString();
+                } else if ("resourceType".equals(fieldName)) {
+                    resourceType = reader.getString();
+                } else if ("text".equals(fieldName)) {
+                    text = FhirR4Narrative.fromJson(reader);
+                } else if ("contained".equals(fieldName)) {
+                    contained = reader.readArray(reader1 -> FhirR4Resource.fromJson(reader1));
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("modifierExtension".equals(fieldName)) {
+                    modifierExtension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("status".equals(fieldName)) {
+                    status = ObservationStatusCodeType.fromString(reader.getString());
+                } else if ("code".equals(fieldName)) {
+                    code = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("identifier".equals(fieldName)) {
+                    identifier = reader.readArray(reader1 -> FhirR4Identifier.fromJson(reader1));
+                } else if ("category".equals(fieldName)) {
+                    category = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else if ("subject".equals(fieldName)) {
+                    subject = FhirR4Reference.fromJson(reader);
+                } else if ("encounter".equals(fieldName)) {
+                    encounter = FhirR4Reference.fromJson(reader);
+                } else if ("effectiveDateTime".equals(fieldName)) {
+                    effectiveDateTime = reader.getString();
+                } else if ("effectivePeriod".equals(fieldName)) {
+                    effectivePeriod = FhirR4Period.fromJson(reader);
+                } else if ("effectiveInstant".equals(fieldName)) {
+                    effectiveInstant = reader.getString();
+                } else if ("issued".equals(fieldName)) {
+                    issued = reader.getString();
+                } else if ("valueQuantity".equals(fieldName)) {
+                    valueQuantity = FhirR4Quantity.fromJson(reader);
+                } else if ("valueCodeableConcept".equals(fieldName)) {
+                    valueCodeableConcept = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("valueString".equals(fieldName)) {
+                    valueString = reader.getString();
+                } else if ("valueBoolean".equals(fieldName)) {
+                    valueBoolean = reader.getNullable(JsonReader::getBoolean);
+                } else if ("valueInteger".equals(fieldName)) {
+                    valueInteger = reader.getNullable(JsonReader::getInt);
+                } else if ("valueRange".equals(fieldName)) {
+                    valueRange = FhirR4Range.fromJson(reader);
+                } else if ("valueRatio".equals(fieldName)) {
+                    valueRatio = FhirR4Ratio.fromJson(reader);
+                } else if ("valueSampledData".equals(fieldName)) {
+                    valueSampledData = FhirR4SampledData.fromJson(reader);
+                } else if ("valueTime".equals(fieldName)) {
+                    valueTime = reader.getString();
+                } else if ("valueDateTime".equals(fieldName)) {
+                    valueDateTime = reader.getString();
+                } else if ("valuePeriod".equals(fieldName)) {
+                    valuePeriod = FhirR4Period.fromJson(reader);
+                } else if ("dataAbsentReason".equals(fieldName)) {
+                    dataAbsentReason = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("interpretation".equals(fieldName)) {
+                    interpretation = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else if ("note".equals(fieldName)) {
+                    note = reader.readArray(reader1 -> FhirR4Annotation.fromJson(reader1));
+                } else if ("bodySite".equals(fieldName)) {
+                    bodySite = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("method".equals(fieldName)) {
+                    method = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("referenceRange".equals(fieldName)) {
+                    referenceRange = reader.readArray(reader1 -> FhirR4ObservationReferenceRange.fromJson(reader1));
+                } else if ("hasMember".equals(fieldName)) {
+                    hasMember = reader.readArray(reader1 -> FhirR4Reference.fromJson(reader1));
+                } else if ("derivedFrom".equals(fieldName)) {
+                    derivedFrom = reader.readArray(reader1 -> FhirR4Reference.fromJson(reader1));
+                } else if ("component".equals(fieldName)) {
+                    component = reader.readArray(reader1 -> FhirR4ObservationComponent.fromJson(reader1));
+                } else {
+                    if (additionalProperties == null) {
+                        additionalProperties = new LinkedHashMap<>();
+                    }
+                    additionalProperties.put(fieldName, reader.readUntyped());
+                }
+            }
+            FhirR4Observation deserializedFhirR4Observation = new FhirR4Observation(resourceType, status, code);
+            deserializedFhirR4Observation.setId(id);
+            deserializedFhirR4Observation.setMeta(meta);
+            deserializedFhirR4Observation.setImplicitRules(implicitRules);
+            deserializedFhirR4Observation.setLanguage(language);
+            deserializedFhirR4Observation.setResourceType(resourceType);
+            deserializedFhirR4Observation.setText(text);
+            deserializedFhirR4Observation.setContained(contained);
+            deserializedFhirR4Observation.setExtension(extension);
+            deserializedFhirR4Observation.setModifierExtension(modifierExtension);
+            deserializedFhirR4Observation.identifier = identifier;
+            deserializedFhirR4Observation.category = category;
+            deserializedFhirR4Observation.subject = subject;
+            deserializedFhirR4Observation.encounter = encounter;
+            deserializedFhirR4Observation.effectiveDateTime = effectiveDateTime;
+            deserializedFhirR4Observation.effectivePeriod = effectivePeriod;
+            deserializedFhirR4Observation.effectiveInstant = effectiveInstant;
+            deserializedFhirR4Observation.issued = issued;
+            deserializedFhirR4Observation.valueQuantity = valueQuantity;
+            deserializedFhirR4Observation.valueCodeableConcept = valueCodeableConcept;
+            deserializedFhirR4Observation.valueString = valueString;
+            deserializedFhirR4Observation.valueBoolean = valueBoolean;
+            deserializedFhirR4Observation.valueInteger = valueInteger;
+            deserializedFhirR4Observation.valueRange = valueRange;
+            deserializedFhirR4Observation.valueRatio = valueRatio;
+            deserializedFhirR4Observation.valueSampledData = valueSampledData;
+            deserializedFhirR4Observation.valueTime = valueTime;
+            deserializedFhirR4Observation.valueDateTime = valueDateTime;
+            deserializedFhirR4Observation.valuePeriod = valuePeriod;
+            deserializedFhirR4Observation.dataAbsentReason = dataAbsentReason;
+            deserializedFhirR4Observation.interpretation = interpretation;
+            deserializedFhirR4Observation.note = note;
+            deserializedFhirR4Observation.bodySite = bodySite;
+            deserializedFhirR4Observation.method = method;
+            deserializedFhirR4Observation.referenceRange = referenceRange;
+            deserializedFhirR4Observation.hasMember = hasMember;
+            deserializedFhirR4Observation.derivedFrom = derivedFrom;
+            deserializedFhirR4Observation.component = component;
+            deserializedFhirR4Observation.setAdditionalProperties(additionalProperties);
+            return deserializedFhirR4Observation;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ObservationComponent.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ObservationComponent.java
index 51ca92c8b0cd..0831251248f1 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ObservationComponent.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ObservationComponent.java
@@ -5,8 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -20,112 +22,96 @@ public final class FhirR4ObservationComponent extends FhirR4Element {
      * Type of component observation (code / type)
      */
     @Generated
-    @JsonProperty(value = "code")
-    private FhirR4CodeableConcept code;
+    private final FhirR4CodeableConcept code;
 
     /*
      * Value as Quantity
      */
     @Generated
-    @JsonProperty(value = "valueQuantity")
     private FhirR4Quantity valueQuantity;
 
     /*
      * Value as CodeableConcept
      */
     @Generated
-    @JsonProperty(value = "valueCodeableConcept")
     private FhirR4CodeableConcept valueCodeableConcept;
 
     /*
      * Value as string
      */
     @Generated
-    @JsonProperty(value = "valueString")
     private String valueString;
 
     /*
      * Value as boolean
      */
     @Generated
-    @JsonProperty(value = "valueBoolean")
     private Boolean valueBoolean;
 
     /*
      * Value as integer
      */
     @Generated
-    @JsonProperty(value = "valueInteger")
     private Integer valueInteger;
 
     /*
      * Value as Range.
      */
     @Generated
-    @JsonProperty(value = "valueRange")
     private FhirR4Range valueRange;
 
     /*
      * Value as Ratio.
      */
     @Generated
-    @JsonProperty(value = "valueRatio")
     private FhirR4Ratio valueRatio;
 
     /*
      * Value as SampledData.
      */
     @Generated
-    @JsonProperty(value = "valueSampledData")
     private FhirR4SampledData valueSampledData;
 
     /*
      * Value as time (hh:mm:ss)
      */
     @Generated
-    @JsonProperty(value = "valueTime")
     private String valueTime;
 
     /*
      * Value as dateTime.
      */
     @Generated
-    @JsonProperty(value = "valueDateTime")
     private String valueDateTime;
 
     /*
      * Value as Period.
      */
     @Generated
-    @JsonProperty(value = "valuePeriod")
     private FhirR4Period valuePeriod;
 
     /*
      * Value as reference.
      */
     @Generated
-    @JsonProperty(value = "valueReference")
     private FhirR4Reference valueReference;
 
     /*
      * Why the component result is missing
      */
     @Generated
-    @JsonProperty(value = "dataAbsentReason")
     private FhirR4CodeableConcept dataAbsentReason;
 
     /*
      * High, low, normal, etc.
      */
     @Generated
-    @JsonProperty(value = "interpretation")
     private List interpretation;
 
     /*
      * Provides guide for interpretation of component result
      */
     @Generated
-    @JsonProperty(value = "referenceRange")
     private List referenceRange;
 
     /**
@@ -134,8 +120,7 @@ public final class FhirR4ObservationComponent extends FhirR4Element {
      * @param code the code value to set.
      */
     @Generated
-    @JsonCreator
-    public FhirR4ObservationComponent(@JsonProperty(value = "code") FhirR4CodeableConcept code) {
+    public FhirR4ObservationComponent(FhirR4CodeableConcept code) {
         this.code = code;
     }
 
@@ -498,4 +483,128 @@ public FhirR4ObservationComponent setExtension(List extension)
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("code", this.code);
+        jsonWriter.writeJsonField("valueQuantity", this.valueQuantity);
+        jsonWriter.writeJsonField("valueCodeableConcept", this.valueCodeableConcept);
+        jsonWriter.writeStringField("valueString", this.valueString);
+        jsonWriter.writeBooleanField("valueBoolean", this.valueBoolean);
+        jsonWriter.writeNumberField("valueInteger", this.valueInteger);
+        jsonWriter.writeJsonField("valueRange", this.valueRange);
+        jsonWriter.writeJsonField("valueRatio", this.valueRatio);
+        jsonWriter.writeJsonField("valueSampledData", this.valueSampledData);
+        jsonWriter.writeStringField("valueTime", this.valueTime);
+        jsonWriter.writeStringField("valueDateTime", this.valueDateTime);
+        jsonWriter.writeJsonField("valuePeriod", this.valuePeriod);
+        jsonWriter.writeJsonField("valueReference", this.valueReference);
+        jsonWriter.writeJsonField("dataAbsentReason", this.dataAbsentReason);
+        jsonWriter.writeArrayField("interpretation", this.interpretation,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("referenceRange", this.referenceRange,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4ObservationComponent from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4ObservationComponent if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FhirR4ObservationComponent.
+     */
+    @Generated
+    public static FhirR4ObservationComponent fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            List extension = null;
+            FhirR4CodeableConcept code = null;
+            FhirR4Quantity valueQuantity = null;
+            FhirR4CodeableConcept valueCodeableConcept = null;
+            String valueString = null;
+            Boolean valueBoolean = null;
+            Integer valueInteger = null;
+            FhirR4Range valueRange = null;
+            FhirR4Ratio valueRatio = null;
+            FhirR4SampledData valueSampledData = null;
+            String valueTime = null;
+            String valueDateTime = null;
+            FhirR4Period valuePeriod = null;
+            FhirR4Reference valueReference = null;
+            FhirR4CodeableConcept dataAbsentReason = null;
+            List interpretation = null;
+            List referenceRange = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("code".equals(fieldName)) {
+                    code = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("valueQuantity".equals(fieldName)) {
+                    valueQuantity = FhirR4Quantity.fromJson(reader);
+                } else if ("valueCodeableConcept".equals(fieldName)) {
+                    valueCodeableConcept = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("valueString".equals(fieldName)) {
+                    valueString = reader.getString();
+                } else if ("valueBoolean".equals(fieldName)) {
+                    valueBoolean = reader.getNullable(JsonReader::getBoolean);
+                } else if ("valueInteger".equals(fieldName)) {
+                    valueInteger = reader.getNullable(JsonReader::getInt);
+                } else if ("valueRange".equals(fieldName)) {
+                    valueRange = FhirR4Range.fromJson(reader);
+                } else if ("valueRatio".equals(fieldName)) {
+                    valueRatio = FhirR4Ratio.fromJson(reader);
+                } else if ("valueSampledData".equals(fieldName)) {
+                    valueSampledData = FhirR4SampledData.fromJson(reader);
+                } else if ("valueTime".equals(fieldName)) {
+                    valueTime = reader.getString();
+                } else if ("valueDateTime".equals(fieldName)) {
+                    valueDateTime = reader.getString();
+                } else if ("valuePeriod".equals(fieldName)) {
+                    valuePeriod = FhirR4Period.fromJson(reader);
+                } else if ("valueReference".equals(fieldName)) {
+                    valueReference = FhirR4Reference.fromJson(reader);
+                } else if ("dataAbsentReason".equals(fieldName)) {
+                    dataAbsentReason = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("interpretation".equals(fieldName)) {
+                    interpretation = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else if ("referenceRange".equals(fieldName)) {
+                    referenceRange = reader.readArray(reader1 -> FhirR4ObservationReferenceRange.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            FhirR4ObservationComponent deserializedFhirR4ObservationComponent = new FhirR4ObservationComponent(code);
+            deserializedFhirR4ObservationComponent.setId(id);
+            deserializedFhirR4ObservationComponent.setExtension(extension);
+            deserializedFhirR4ObservationComponent.valueQuantity = valueQuantity;
+            deserializedFhirR4ObservationComponent.valueCodeableConcept = valueCodeableConcept;
+            deserializedFhirR4ObservationComponent.valueString = valueString;
+            deserializedFhirR4ObservationComponent.valueBoolean = valueBoolean;
+            deserializedFhirR4ObservationComponent.valueInteger = valueInteger;
+            deserializedFhirR4ObservationComponent.valueRange = valueRange;
+            deserializedFhirR4ObservationComponent.valueRatio = valueRatio;
+            deserializedFhirR4ObservationComponent.valueSampledData = valueSampledData;
+            deserializedFhirR4ObservationComponent.valueTime = valueTime;
+            deserializedFhirR4ObservationComponent.valueDateTime = valueDateTime;
+            deserializedFhirR4ObservationComponent.valuePeriod = valuePeriod;
+            deserializedFhirR4ObservationComponent.valueReference = valueReference;
+            deserializedFhirR4ObservationComponent.dataAbsentReason = dataAbsentReason;
+            deserializedFhirR4ObservationComponent.interpretation = interpretation;
+            deserializedFhirR4ObservationComponent.referenceRange = referenceRange;
+            return deserializedFhirR4ObservationComponent;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ObservationReferenceRange.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ObservationReferenceRange.java
index d66e000faffa..c7d77d19b791 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ObservationReferenceRange.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ObservationReferenceRange.java
@@ -5,7 +5,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -13,48 +17,42 @@
  * Based on [FHIR Observation.referenceRange](https://www.hl7.org/fhir/R4/observation.html).
  */
 @Fluent
-public final class FhirR4ObservationReferenceRange {
+public final class FhirR4ObservationReferenceRange implements JsonSerializable {
 
     /*
      * Low Range, if relevant
      */
     @Generated
-    @JsonProperty(value = "low")
     private FhirR4Quantity low;
 
     /*
      * High Range, if relevant
      */
     @Generated
-    @JsonProperty(value = "high")
     private FhirR4Quantity high;
 
     /*
      * Reference range qualifier
      */
     @Generated
-    @JsonProperty(value = "type")
     private FhirR4CodeableConcept type;
 
     /*
      * Reference range population
      */
     @Generated
-    @JsonProperty(value = "appliesTo")
     private List appliesTo;
 
     /*
      * Applicable age range, if relevant
      */
     @Generated
-    @JsonProperty(value = "age")
     private FhirR4Range age;
 
     /*
      * Text based reference range in an observation
      */
     @Generated
-    @JsonProperty(value = "text")
     private String text;
 
     /**
@@ -195,4 +193,57 @@ public FhirR4ObservationReferenceRange setText(String text) {
         this.text = text;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeJsonField("low", this.low);
+        jsonWriter.writeJsonField("high", this.high);
+        jsonWriter.writeJsonField("type", this.type);
+        jsonWriter.writeArrayField("appliesTo", this.appliesTo, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("age", this.age);
+        jsonWriter.writeStringField("text", this.text);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4ObservationReferenceRange from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4ObservationReferenceRange if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4ObservationReferenceRange.
+     */
+    @Generated
+    public static FhirR4ObservationReferenceRange fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4ObservationReferenceRange deserializedFhirR4ObservationReferenceRange
+                = new FhirR4ObservationReferenceRange();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("low".equals(fieldName)) {
+                    deserializedFhirR4ObservationReferenceRange.low = FhirR4Quantity.fromJson(reader);
+                } else if ("high".equals(fieldName)) {
+                    deserializedFhirR4ObservationReferenceRange.high = FhirR4Quantity.fromJson(reader);
+                } else if ("type".equals(fieldName)) {
+                    deserializedFhirR4ObservationReferenceRange.type = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("appliesTo".equals(fieldName)) {
+                    List appliesTo
+                        = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                    deserializedFhirR4ObservationReferenceRange.appliesTo = appliesTo;
+                } else if ("age".equals(fieldName)) {
+                    deserializedFhirR4ObservationReferenceRange.age = FhirR4Range.fromJson(reader);
+                } else if ("text".equals(fieldName)) {
+                    deserializedFhirR4ObservationReferenceRange.text = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4ObservationReferenceRange;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Period.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Period.java
index 7af99c080550..a0e8563641f9 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Period.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Period.java
@@ -5,7 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -19,14 +22,12 @@ public final class FhirR4Period extends FhirR4Element {
      * Starting time with inclusive boundary
      */
     @Generated
-    @JsonProperty(value = "start")
     private String start;
 
     /*
      * End time with inclusive boundary, if not ongoing
      */
     @Generated
-    @JsonProperty(value = "end")
     private String end;
 
     /**
@@ -99,4 +100,49 @@ public FhirR4Period setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("start", this.start);
+        jsonWriter.writeStringField("end", this.end);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Period from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Period if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4Period.
+     */
+    @Generated
+    public static FhirR4Period fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4Period deserializedFhirR4Period = new FhirR4Period();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    deserializedFhirR4Period.setId(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedFhirR4Period.setExtension(extension);
+                } else if ("start".equals(fieldName)) {
+                    deserializedFhirR4Period.start = reader.getString();
+                } else if ("end".equals(fieldName)) {
+                    deserializedFhirR4Period.end = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4Period;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Quantity.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Quantity.java
index d85dcf226aa7..e4811230ef10 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Quantity.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Quantity.java
@@ -5,7 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -19,35 +22,30 @@ public final class FhirR4Quantity extends FhirR4Element {
      * Numerical value (with implicit precision)
      */
     @Generated
-    @JsonProperty(value = "value")
     private Double value;
 
     /*
      * < | <= | >= | > - how to understand the value
      */
     @Generated
-    @JsonProperty(value = "comparator")
     private String comparator;
 
     /*
      * Unit representation
      */
     @Generated
-    @JsonProperty(value = "unit")
     private String unit;
 
     /*
      * System that defines coded unit form
      */
     @Generated
-    @JsonProperty(value = "system")
     private String system;
 
     /*
      * Coded form of the unit
      */
     @Generated
-    @JsonProperty(value = "code")
     private String code;
 
     /**
@@ -186,4 +184,58 @@ public FhirR4Quantity setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeNumberField("value", this.value);
+        jsonWriter.writeStringField("comparator", this.comparator);
+        jsonWriter.writeStringField("unit", this.unit);
+        jsonWriter.writeStringField("system", this.system);
+        jsonWriter.writeStringField("code", this.code);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Quantity from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Quantity if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4Quantity.
+     */
+    @Generated
+    public static FhirR4Quantity fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4Quantity deserializedFhirR4Quantity = new FhirR4Quantity();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    deserializedFhirR4Quantity.setId(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedFhirR4Quantity.setExtension(extension);
+                } else if ("value".equals(fieldName)) {
+                    deserializedFhirR4Quantity.value = reader.getNullable(JsonReader::getDouble);
+                } else if ("comparator".equals(fieldName)) {
+                    deserializedFhirR4Quantity.comparator = reader.getString();
+                } else if ("unit".equals(fieldName)) {
+                    deserializedFhirR4Quantity.unit = reader.getString();
+                } else if ("system".equals(fieldName)) {
+                    deserializedFhirR4Quantity.system = reader.getString();
+                } else if ("code".equals(fieldName)) {
+                    deserializedFhirR4Quantity.code = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4Quantity;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Range.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Range.java
index 3da346e6cd6c..cd37874750b6 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Range.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Range.java
@@ -5,7 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -19,14 +22,12 @@ public final class FhirR4Range extends FhirR4Element {
      * Low limit
      */
     @Generated
-    @JsonProperty(value = "low")
     private FhirR4Quantity low;
 
     /*
      * High limit
      */
     @Generated
-    @JsonProperty(value = "high")
     private FhirR4Quantity high;
 
     /**
@@ -99,4 +100,49 @@ public FhirR4Range setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("low", this.low);
+        jsonWriter.writeJsonField("high", this.high);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Range from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Range if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4Range.
+     */
+    @Generated
+    public static FhirR4Range fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4Range deserializedFhirR4Range = new FhirR4Range();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    deserializedFhirR4Range.setId(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedFhirR4Range.setExtension(extension);
+                } else if ("low".equals(fieldName)) {
+                    deserializedFhirR4Range.low = FhirR4Quantity.fromJson(reader);
+                } else if ("high".equals(fieldName)) {
+                    deserializedFhirR4Range.high = FhirR4Quantity.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4Range;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Ratio.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Ratio.java
index c1587cb0fca5..873a6c1c46d5 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Ratio.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Ratio.java
@@ -5,7 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -19,14 +22,12 @@ public final class FhirR4Ratio extends FhirR4Element {
      * Numerator value
      */
     @Generated
-    @JsonProperty(value = "numerator")
     private FhirR4Quantity numerator;
 
     /*
      * Denominator value
      */
     @Generated
-    @JsonProperty(value = "denominator")
     private FhirR4Quantity denominator;
 
     /**
@@ -99,4 +100,49 @@ public FhirR4Ratio setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("numerator", this.numerator);
+        jsonWriter.writeJsonField("denominator", this.denominator);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Ratio from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Ratio if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4Ratio.
+     */
+    @Generated
+    public static FhirR4Ratio fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4Ratio deserializedFhirR4Ratio = new FhirR4Ratio();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    deserializedFhirR4Ratio.setId(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedFhirR4Ratio.setExtension(extension);
+                } else if ("numerator".equals(fieldName)) {
+                    deserializedFhirR4Ratio.numerator = FhirR4Quantity.fromJson(reader);
+                } else if ("denominator".equals(fieldName)) {
+                    deserializedFhirR4Ratio.denominator = FhirR4Quantity.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4Ratio;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Reference.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Reference.java
index 33f3cd46a7bb..d124838d5aa5 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Reference.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Reference.java
@@ -5,7 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -19,28 +22,24 @@ public final class FhirR4Reference extends FhirR4Element {
      * Literal reference, Relative, internal or absolute URL
      */
     @Generated
-    @JsonProperty(value = "reference")
     private String reference;
 
     /*
      * Type the reference refers to (e.g. "Patient")
      */
     @Generated
-    @JsonProperty(value = "type")
     private String type;
 
     /*
      * Logical reference, when literal reference is not known
      */
     @Generated
-    @JsonProperty(value = "identifier")
     private FhirR4Identifier identifier;
 
     /*
      * Text alternative for the resource
      */
     @Generated
-    @JsonProperty(value = "display")
     private String display;
 
     /**
@@ -157,4 +156,55 @@ public FhirR4Reference setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("reference", this.reference);
+        jsonWriter.writeStringField("type", this.type);
+        jsonWriter.writeJsonField("identifier", this.identifier);
+        jsonWriter.writeStringField("display", this.display);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Reference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Reference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FhirR4Reference.
+     */
+    @Generated
+    public static FhirR4Reference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4Reference deserializedFhirR4Reference = new FhirR4Reference();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    deserializedFhirR4Reference.setId(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    List extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                    deserializedFhirR4Reference.setExtension(extension);
+                } else if ("reference".equals(fieldName)) {
+                    deserializedFhirR4Reference.reference = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    deserializedFhirR4Reference.type = reader.getString();
+                } else if ("identifier".equals(fieldName)) {
+                    deserializedFhirR4Reference.identifier = FhirR4Identifier.fromJson(reader);
+                } else if ("display".equals(fieldName)) {
+                    deserializedFhirR4Reference.display = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFhirR4Reference;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ResearchStudy.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ResearchStudy.java
index b904ab737e32..8c683ee9326d 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ResearchStudy.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4ResearchStudy.java
@@ -5,18 +5,18 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Detailed information about Research Study
  * Based on [FHIR ResearchStudy](https://www.hl7.org/fhir/R4/researchstudy.html).
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "resourceType")
-@JsonTypeName("ResearchStudy")
 @Fluent
 public final class FhirR4ResearchStudy extends FhirR4DomainResource {
 
@@ -24,165 +24,138 @@ public final class FhirR4ResearchStudy extends FhirR4DomainResource {
      * Business Identifier for study
      */
     @Generated
-    @JsonProperty(value = "identifier")
     private List identifier;
 
     /*
      * Name for this study
      */
     @Generated
-    @JsonProperty(value = "title")
     private String title;
 
     /*
      * Steps followed in executing study
      */
     @Generated
-    @JsonProperty(value = "protocol")
     private List protocol;
 
     /*
      * Part of larger study
      */
     @Generated
-    @JsonProperty(value = "partOf")
     private List partOf;
 
     /*
-     * active | administratively-completed | approved | closed-to-accrual | closed-to-accrual-and-intervention |
-     * completed | disapproved | in-review | temporarily-closed-to-accrual |
-     * temporarily-closed-to-accrual-and-intervention | withdrawn
+     * active | administratively-completed | approved | closed-to-accrual | closed-to-accrual-and-intervention | completed | disapproved | in-review | temporarily-closed-to-accrual | temporarily-closed-to-accrual-and-intervention | withdrawn
      */
     @Generated
-    @JsonProperty(value = "status")
-    private ResearchStudyStatusCodeType status;
+    private final ResearchStudyStatusCodeType status;
 
     /*
-     * treatment | prevention | diagnostic | supportive-care | screening | health-services-research | basic-science |
-     * device-feasibility
+     * treatment | prevention | diagnostic | supportive-care | screening | health-services-research | basic-science | device-feasibility
      */
     @Generated
-    @JsonProperty(value = "primaryPurposeType")
     private FhirR4CodeableConcept primaryPurposeType;
 
     /*
      * n-a | early-phase-1 | phase-1 | phase-1-phase-2 | phase-2 | phase-2-phase-3 | phase-3 | phase-4
      */
     @Generated
-    @JsonProperty(value = "phase")
     private FhirR4CodeableConcept phase;
 
     /*
      * Classifications for the study
      */
     @Generated
-    @JsonProperty(value = "category")
     private List category;
 
     /*
      * Drugs, devices, etc. under study
      */
     @Generated
-    @JsonProperty(value = "focus")
     private List focus;
 
     /*
      * Condition being studied
      */
     @Generated
-    @JsonProperty(value = "condition")
     private List condition;
 
     /*
      * Contact details for the study
      */
     @Generated
-    @JsonProperty(value = "contact")
     private List contact;
 
     /*
      * Used to search for the study
      */
     @Generated
-    @JsonProperty(value = "keyword")
     private List keyword;
 
     /*
      * Geographic region(s) for study
      */
     @Generated
-    @JsonProperty(value = "location")
     private List location;
 
     /*
      * What this is study doing
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * Inclusion & exclusion criteria
      */
     @Generated
-    @JsonProperty(value = "enrollment")
     private List enrollment;
 
     /*
      * When the study began and ended
      */
     @Generated
-    @JsonProperty(value = "period")
     private FhirR4Period period;
 
     /*
      * Organization that initiates and is legally responsible for the study
      */
     @Generated
-    @JsonProperty(value = "sponsor")
     private FhirR4Reference sponsor;
 
     /*
      * Researcher who oversees multiple aspects of the study
      */
     @Generated
-    @JsonProperty(value = "principalInvestigator")
     private FhirR4Reference principalInvestigator;
 
     /*
      * Facility where study activities are conducted
      */
     @Generated
-    @JsonProperty(value = "site")
     private List site;
 
     /*
-     * accrual-goal-met | closed-due-to-toxicity | closed-due-to-lack-of-study-progress |
-     * temporarily-closed-per-study-design
+     * accrual-goal-met | closed-due-to-toxicity | closed-due-to-lack-of-study-progress | temporarily-closed-per-study-design
      */
     @Generated
-    @JsonProperty(value = "reasonStopped")
     private FhirR4CodeableConcept reasonStopped;
 
     /*
      * Comments made about the study
      */
     @Generated
-    @JsonProperty(value = "note")
     private List note;
 
     /*
      * Defined path through the study for a subject
      */
     @Generated
-    @JsonProperty(value = "arm")
     private List arm;
 
     /*
      * A goal for the study
      */
     @Generated
-    @JsonProperty(value = "objective")
     private List objective;
 
     /**
@@ -192,10 +165,9 @@ public final class FhirR4ResearchStudy extends FhirR4DomainResource {
      * @param status the status value to set.
      */
     @Generated
-    @JsonCreator
-    public FhirR4ResearchStudy(@JsonProperty(value = "resourceType") String resourceType,
-        @JsonProperty(value = "status") ResearchStudyStatusCodeType status) {
+    public FhirR4ResearchStudy(String resourceType, ResearchStudyStatusCodeType status) {
         super(resourceType);
+        setResourceType("ResearchStudy");
         this.status = status;
     }
 
@@ -288,9 +260,7 @@ public FhirR4ResearchStudy setPartOf(List partOf) {
     }
 
     /**
-     * Get the status property: active | administratively-completed | approved | closed-to-accrual |
-     * closed-to-accrual-and-intervention | completed | disapproved | in-review | temporarily-closed-to-accrual |
-     * temporarily-closed-to-accrual-and-intervention | withdrawn.
+     * Get the status property: active | administratively-completed | approved | closed-to-accrual | closed-to-accrual-and-intervention | completed | disapproved | in-review | temporarily-closed-to-accrual | temporarily-closed-to-accrual-and-intervention | withdrawn.
      *
      * @return the status value.
      */
@@ -300,8 +270,7 @@ public ResearchStudyStatusCodeType getStatus() {
     }
 
     /**
-     * Get the primaryPurposeType property: treatment | prevention | diagnostic | supportive-care | screening |
-     * health-services-research | basic-science | device-feasibility.
+     * Get the primaryPurposeType property: treatment | prevention | diagnostic | supportive-care | screening | health-services-research | basic-science | device-feasibility.
      *
      * @return the primaryPurposeType value.
      */
@@ -311,8 +280,7 @@ public FhirR4CodeableConcept getPrimaryPurposeType() {
     }
 
     /**
-     * Set the primaryPurposeType property: treatment | prevention | diagnostic | supportive-care | screening |
-     * health-services-research | basic-science | device-feasibility.
+     * Set the primaryPurposeType property: treatment | prevention | diagnostic | supportive-care | screening | health-services-research | basic-science | device-feasibility.
      *
      * @param primaryPurposeType the primaryPurposeType value to set.
      * @return the FhirR4ResearchStudy object itself.
@@ -324,8 +292,7 @@ public FhirR4ResearchStudy setPrimaryPurposeType(FhirR4CodeableConcept primaryPu
     }
 
     /**
-     * Get the phase property: n-a | early-phase-1 | phase-1 | phase-1-phase-2 | phase-2 | phase-2-phase-3 | phase-3 |
-     * phase-4.
+     * Get the phase property: n-a | early-phase-1 | phase-1 | phase-1-phase-2 | phase-2 | phase-2-phase-3 | phase-3 | phase-4.
      *
      * @return the phase value.
      */
@@ -335,8 +302,7 @@ public FhirR4CodeableConcept getPhase() {
     }
 
     /**
-     * Set the phase property: n-a | early-phase-1 | phase-1 | phase-1-phase-2 | phase-2 | phase-2-phase-3 | phase-3 |
-     * phase-4.
+     * Set the phase property: n-a | early-phase-1 | phase-1 | phase-1-phase-2 | phase-2 | phase-2-phase-3 | phase-3 | phase-4.
      *
      * @param phase the phase value to set.
      * @return the FhirR4ResearchStudy object itself.
@@ -612,8 +578,7 @@ public FhirR4ResearchStudy setSite(List site) {
     }
 
     /**
-     * Get the reasonStopped property: accrual-goal-met | closed-due-to-toxicity | closed-due-to-lack-of-study-progress
-     * | temporarily-closed-per-study-design.
+     * Get the reasonStopped property: accrual-goal-met | closed-due-to-toxicity | closed-due-to-lack-of-study-progress | temporarily-closed-per-study-design.
      *
      * @return the reasonStopped value.
      */
@@ -623,8 +588,7 @@ public FhirR4CodeableConcept getReasonStopped() {
     }
 
     /**
-     * Set the reasonStopped property: accrual-goal-met | closed-due-to-toxicity | closed-due-to-lack-of-study-progress
-     * | temporarily-closed-per-study-design.
+     * Set the reasonStopped property: accrual-goal-met | closed-due-to-toxicity | closed-due-to-lack-of-study-progress | temporarily-closed-per-study-design.
      *
      * @param reasonStopped the reasonStopped value to set.
      * @return the FhirR4ResearchStudy object itself.
@@ -780,4 +744,211 @@ public FhirR4ResearchStudy setLanguage(String language) {
         super.setLanguage(language);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("resourceType", getResourceType());
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeJsonField("meta", getMeta());
+        jsonWriter.writeStringField("implicitRules", getImplicitRules());
+        jsonWriter.writeStringField("language", getLanguage());
+        jsonWriter.writeStringField("resourceType", getResourceType());
+        jsonWriter.writeJsonField("text", getText());
+        jsonWriter.writeArrayField("contained", getContained(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("modifierExtension", getModifierExtension(),
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        jsonWriter.writeArrayField("identifier", this.identifier, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("title", this.title);
+        jsonWriter.writeArrayField("protocol", this.protocol, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("partOf", this.partOf, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("primaryPurposeType", this.primaryPurposeType);
+        jsonWriter.writeJsonField("phase", this.phase);
+        jsonWriter.writeArrayField("category", this.category, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("focus", this.focus, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("condition", this.condition, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("contact", this.contact, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("keyword", this.keyword, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("location", this.location, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeArrayField("enrollment", this.enrollment, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("period", this.period);
+        jsonWriter.writeJsonField("sponsor", this.sponsor);
+        jsonWriter.writeJsonField("principalInvestigator", this.principalInvestigator);
+        jsonWriter.writeArrayField("site", this.site, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("reasonStopped", this.reasonStopped);
+        jsonWriter.writeArrayField("note", this.note, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("arm", this.arm, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("objective", this.objective, (writer, element) -> writer.writeJson(element));
+        if (getAdditionalProperties() != null) {
+            for (Map.Entry additionalProperty : getAdditionalProperties().entrySet()) {
+                jsonWriter.writeUntypedField(additionalProperty.getKey(), additionalProperty.getValue());
+            }
+        }
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4ResearchStudy from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4ResearchStudy if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FhirR4ResearchStudy.
+     */
+    @Generated
+    public static FhirR4ResearchStudy fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String resourceType = null;
+            String id = null;
+            FhirR4Meta meta = null;
+            String implicitRules = null;
+            String language = null;
+            String resourceType = "ResearchStudy";
+            FhirR4Narrative text = null;
+            List contained = null;
+            List extension = null;
+            List modifierExtension = null;
+            ResearchStudyStatusCodeType status = null;
+            List identifier = null;
+            String title = null;
+            List protocol = null;
+            List partOf = null;
+            FhirR4CodeableConcept primaryPurposeType = null;
+            FhirR4CodeableConcept phase = null;
+            List category = null;
+            List focus = null;
+            List condition = null;
+            List contact = null;
+            List keyword = null;
+            List location = null;
+            String description = null;
+            List enrollment = null;
+            FhirR4Period period = null;
+            FhirR4Reference sponsor = null;
+            FhirR4Reference principalInvestigator = null;
+            List site = null;
+            FhirR4CodeableConcept reasonStopped = null;
+            List note = null;
+            List arm = null;
+            List objective = null;
+            Map additionalProperties = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("resourceType".equals(fieldName)) {
+                    resourceType = reader.getString();
+                } else if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("meta".equals(fieldName)) {
+                    meta = FhirR4Meta.fromJson(reader);
+                } else if ("implicitRules".equals(fieldName)) {
+                    implicitRules = reader.getString();
+                } else if ("language".equals(fieldName)) {
+                    language = reader.getString();
+                } else if ("resourceType".equals(fieldName)) {
+                    resourceType = reader.getString();
+                } else if ("text".equals(fieldName)) {
+                    text = FhirR4Narrative.fromJson(reader);
+                } else if ("contained".equals(fieldName)) {
+                    contained = reader.readArray(reader1 -> FhirR4Resource.fromJson(reader1));
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("modifierExtension".equals(fieldName)) {
+                    modifierExtension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("status".equals(fieldName)) {
+                    status = ResearchStudyStatusCodeType.fromString(reader.getString());
+                } else if ("identifier".equals(fieldName)) {
+                    identifier = reader.readArray(reader1 -> FhirR4Identifier.fromJson(reader1));
+                } else if ("title".equals(fieldName)) {
+                    title = reader.getString();
+                } else if ("protocol".equals(fieldName)) {
+                    protocol = reader.readArray(reader1 -> FhirR4Reference.fromJson(reader1));
+                } else if ("partOf".equals(fieldName)) {
+                    partOf = reader.readArray(reader1 -> FhirR4Reference.fromJson(reader1));
+                } else if ("primaryPurposeType".equals(fieldName)) {
+                    primaryPurposeType = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("phase".equals(fieldName)) {
+                    phase = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("category".equals(fieldName)) {
+                    category = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else if ("focus".equals(fieldName)) {
+                    focus = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else if ("condition".equals(fieldName)) {
+                    condition = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else if ("contact".equals(fieldName)) {
+                    contact = reader.readArray(reader1 -> FhirR4ContactDetail.fromJson(reader1));
+                } else if ("keyword".equals(fieldName)) {
+                    keyword = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else if ("location".equals(fieldName)) {
+                    location = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("enrollment".equals(fieldName)) {
+                    enrollment = reader.readArray(reader1 -> FhirR4Reference.fromJson(reader1));
+                } else if ("period".equals(fieldName)) {
+                    period = FhirR4Period.fromJson(reader);
+                } else if ("sponsor".equals(fieldName)) {
+                    sponsor = FhirR4Reference.fromJson(reader);
+                } else if ("principalInvestigator".equals(fieldName)) {
+                    principalInvestigator = FhirR4Reference.fromJson(reader);
+                } else if ("site".equals(fieldName)) {
+                    site = reader.readArray(reader1 -> FhirR4Reference.fromJson(reader1));
+                } else if ("reasonStopped".equals(fieldName)) {
+                    reasonStopped = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("note".equals(fieldName)) {
+                    note = reader.readArray(reader1 -> FhirR4Annotation.fromJson(reader1));
+                } else if ("arm".equals(fieldName)) {
+                    arm = reader.readArray(reader1 -> ResearchStudyArm.fromJson(reader1));
+                } else if ("objective".equals(fieldName)) {
+                    objective = reader.readArray(reader1 -> ResearchStudyObjective.fromJson(reader1));
+                } else {
+                    if (additionalProperties == null) {
+                        additionalProperties = new LinkedHashMap<>();
+                    }
+                    additionalProperties.put(fieldName, reader.readUntyped());
+                }
+            }
+            FhirR4ResearchStudy deserializedFhirR4ResearchStudy = new FhirR4ResearchStudy(resourceType, status);
+            deserializedFhirR4ResearchStudy.setId(id);
+            deserializedFhirR4ResearchStudy.setMeta(meta);
+            deserializedFhirR4ResearchStudy.setImplicitRules(implicitRules);
+            deserializedFhirR4ResearchStudy.setLanguage(language);
+            deserializedFhirR4ResearchStudy.setResourceType(resourceType);
+            deserializedFhirR4ResearchStudy.setText(text);
+            deserializedFhirR4ResearchStudy.setContained(contained);
+            deserializedFhirR4ResearchStudy.setExtension(extension);
+            deserializedFhirR4ResearchStudy.setModifierExtension(modifierExtension);
+            deserializedFhirR4ResearchStudy.identifier = identifier;
+            deserializedFhirR4ResearchStudy.title = title;
+            deserializedFhirR4ResearchStudy.protocol = protocol;
+            deserializedFhirR4ResearchStudy.partOf = partOf;
+            deserializedFhirR4ResearchStudy.primaryPurposeType = primaryPurposeType;
+            deserializedFhirR4ResearchStudy.phase = phase;
+            deserializedFhirR4ResearchStudy.category = category;
+            deserializedFhirR4ResearchStudy.focus = focus;
+            deserializedFhirR4ResearchStudy.condition = condition;
+            deserializedFhirR4ResearchStudy.contact = contact;
+            deserializedFhirR4ResearchStudy.keyword = keyword;
+            deserializedFhirR4ResearchStudy.location = location;
+            deserializedFhirR4ResearchStudy.description = description;
+            deserializedFhirR4ResearchStudy.enrollment = enrollment;
+            deserializedFhirR4ResearchStudy.period = period;
+            deserializedFhirR4ResearchStudy.sponsor = sponsor;
+            deserializedFhirR4ResearchStudy.principalInvestigator = principalInvestigator;
+            deserializedFhirR4ResearchStudy.site = site;
+            deserializedFhirR4ResearchStudy.reasonStopped = reasonStopped;
+            deserializedFhirR4ResearchStudy.note = note;
+            deserializedFhirR4ResearchStudy.arm = arm;
+            deserializedFhirR4ResearchStudy.objective = objective;
+            deserializedFhirR4ResearchStudy.setAdditionalProperties(additionalProperties);
+            return deserializedFhirR4ResearchStudy;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Resource.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Resource.java
index 96d379d29eb0..e6e7e9a658a8 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Resource.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4Resource.java
@@ -5,62 +5,55 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonAnyGetter;
-import com.fasterxml.jackson.annotation.JsonAnySetter;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.HashMap;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
- * Resource is the ancestor of DomainResource from which most resources are derived. Bundle, Parameters, and Binary
- * extend Resource directly.
+ * Resource is the ancestor of DomainResource from which most resources are derived. Bundle, Parameters, and Binary extend Resource directly.
  * Based on [FHIR Resource](https://www.hl7.org/fhir/r4/resource.html.
  */
 @Fluent
-public class FhirR4Resource {
+public class FhirR4Resource implements JsonSerializable {
 
     /*
      * The type of resource
      */
     @Generated
-    @JsonProperty(value = "resourceType")
-    private String resourceType;
+    private final String resourceType;
 
     /*
      * Resource Id
      */
     @Generated
-    @JsonProperty(value = "id")
     private String id;
 
     /*
      * Metadata about the resource
      */
     @Generated
-    @JsonProperty(value = "meta")
     private FhirR4Meta meta;
 
     /*
      * A set of rules under which this content was created
      */
     @Generated
-    @JsonProperty(value = "implicitRules")
     private String implicitRules;
 
     /*
      * Language of the resource content
      */
     @Generated
-    @JsonProperty(value = "language")
     private String language;
 
     /*
      * Additional properties
      */
     @Generated
-    @JsonIgnore
     private Map additionalProperties;
 
     /**
@@ -69,8 +62,7 @@ public class FhirR4Resource {
      * @param resourceType the resourceType value to set.
      */
     @Generated
-    @JsonCreator
-    public FhirR4Resource(@JsonProperty(value = "resourceType") String resourceType) {
+    public FhirR4Resource(String resourceType) {
         this.resourceType = resourceType;
     }
 
@@ -178,7 +170,6 @@ public FhirR4Resource setLanguage(String language) {
      * @return the additionalProperties value.
      */
     @Generated
-    @JsonAnyGetter
     public Map getAdditionalProperties() {
         return this.additionalProperties;
     }
@@ -195,12 +186,70 @@ public FhirR4Resource setAdditionalProperties(Map additionalProp
         return this;
     }
 
-    @Generated
-    @JsonAnySetter
-    void setAdditionalProperties(String key, Object value) {
-        if (additionalProperties == null) {
-            additionalProperties = new HashMap<>();
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("resourceType", this.resourceType);
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeJsonField("meta", this.meta);
+        jsonWriter.writeStringField("implicitRules", this.implicitRules);
+        jsonWriter.writeStringField("language", this.language);
+        if (additionalProperties != null) {
+            for (Map.Entry additionalProperty : additionalProperties.entrySet()) {
+                jsonWriter.writeUntypedField(additionalProperty.getKey(), additionalProperty.getValue());
+            }
         }
-        additionalProperties.put(key, value);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4Resource from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4Resource if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FhirR4Resource.
+     */
+    @Generated
+    public static FhirR4Resource fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String resourceType = null;
+            String id = null;
+            FhirR4Meta meta = null;
+            String implicitRules = null;
+            String language = null;
+            Map additionalProperties = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("resourceType".equals(fieldName)) {
+                    resourceType = reader.getString();
+                } else if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("meta".equals(fieldName)) {
+                    meta = FhirR4Meta.fromJson(reader);
+                } else if ("implicitRules".equals(fieldName)) {
+                    implicitRules = reader.getString();
+                } else if ("language".equals(fieldName)) {
+                    language = reader.getString();
+                } else {
+                    if (additionalProperties == null) {
+                        additionalProperties = new LinkedHashMap<>();
+                    }
+                    additionalProperties.put(fieldName, reader.readUntyped());
+                }
+            }
+            FhirR4Resource deserializedFhirR4Resource = new FhirR4Resource(resourceType);
+            deserializedFhirR4Resource.id = id;
+            deserializedFhirR4Resource.meta = meta;
+            deserializedFhirR4Resource.implicitRules = implicitRules;
+            deserializedFhirR4Resource.language = language;
+            deserializedFhirR4Resource.additionalProperties = additionalProperties;
+            return deserializedFhirR4Resource;
+        });
     }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4SampledData.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4SampledData.java
index bcb3b4a6382f..ee876871933e 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4SampledData.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FhirR4SampledData.java
@@ -5,8 +5,10 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -20,49 +22,42 @@ public final class FhirR4SampledData extends FhirR4Element {
      * Zero value and units
      */
     @Generated
-    @JsonProperty(value = "origin")
-    private FhirR4Quantity origin;
+    private final FhirR4Quantity origin;
 
     /*
      * Number of milliseconds between samples
      */
     @Generated
-    @JsonProperty(value = "period")
-    private double period;
+    private final double period;
 
     /*
      * Multiply data by this before adding to origin
      */
     @Generated
-    @JsonProperty(value = "factor")
     private Double factor;
 
     /*
      * Lower limit of detection
      */
     @Generated
-    @JsonProperty(value = "lowerLimit")
     private Double lowerLimit;
 
     /*
      * Upper limit of detection
      */
     @Generated
-    @JsonProperty(value = "upperLimit")
     private Double upperLimit;
 
     /*
      * Number of sample points at each time point
      */
     @Generated
-    @JsonProperty(value = "dimensions")
-    private int dimensions;
+    private final int dimensions;
 
     /*
      * Decimal values with spaces, or "E" | "U" | "L"
      */
     @Generated
-    @JsonProperty(value = "data")
     private String data;
 
     /**
@@ -73,9 +68,7 @@ public final class FhirR4SampledData extends FhirR4Element {
      * @param dimensions the dimensions value to set.
      */
     @Generated
-    @JsonCreator
-    public FhirR4SampledData(@JsonProperty(value = "origin") FhirR4Quantity origin,
-        @JsonProperty(value = "period") double period, @JsonProperty(value = "dimensions") int dimensions) {
+    public FhirR4SampledData(FhirR4Quantity origin, double period, int dimensions) {
         this.origin = origin;
         this.period = period;
         this.dimensions = dimensions;
@@ -218,4 +211,79 @@ public FhirR4SampledData setExtension(List extension) {
         super.setExtension(extension);
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("origin", this.origin);
+        jsonWriter.writeDoubleField("period", this.period);
+        jsonWriter.writeIntField("dimensions", this.dimensions);
+        jsonWriter.writeNumberField("factor", this.factor);
+        jsonWriter.writeNumberField("lowerLimit", this.lowerLimit);
+        jsonWriter.writeNumberField("upperLimit", this.upperLimit);
+        jsonWriter.writeStringField("data", this.data);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FhirR4SampledData from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FhirR4SampledData if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FhirR4SampledData.
+     */
+    @Generated
+    public static FhirR4SampledData fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            List extension = null;
+            FhirR4Quantity origin = null;
+            double period = 0.0;
+            int dimensions = 0;
+            Double factor = null;
+            Double lowerLimit = null;
+            Double upperLimit = null;
+            String data = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("origin".equals(fieldName)) {
+                    origin = FhirR4Quantity.fromJson(reader);
+                } else if ("period".equals(fieldName)) {
+                    period = reader.getDouble();
+                } else if ("dimensions".equals(fieldName)) {
+                    dimensions = reader.getInt();
+                } else if ("factor".equals(fieldName)) {
+                    factor = reader.getNullable(JsonReader::getDouble);
+                } else if ("lowerLimit".equals(fieldName)) {
+                    lowerLimit = reader.getNullable(JsonReader::getDouble);
+                } else if ("upperLimit".equals(fieldName)) {
+                    upperLimit = reader.getNullable(JsonReader::getDouble);
+                } else if ("data".equals(fieldName)) {
+                    data = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            FhirR4SampledData deserializedFhirR4SampledData = new FhirR4SampledData(origin, period, dimensions);
+            deserializedFhirR4SampledData.setId(id);
+            deserializedFhirR4SampledData.setExtension(extension);
+            deserializedFhirR4SampledData.factor = factor;
+            deserializedFhirR4SampledData.lowerLimit = lowerLimit;
+            deserializedFhirR4SampledData.upperLimit = upperLimit;
+            deserializedFhirR4SampledData.data = data;
+            return deserializedFhirR4SampledData;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FindingInference.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FindingInference.java
index 36f422ecdac5..99ab4cd619c6 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FindingInference.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FindingInference.java
@@ -5,17 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.List;
 
 /**
- * Findings in a radiology report typically describe abnormalities, lesions, or other notable observations related to
- * the anatomy or pathology of the imaged area.
+ * Findings in a radiology report typically describe abnormalities, lesions, or other notable observations related to the anatomy or pathology of the imaged area.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("finding")
 @Immutable
 public final class FindingInference extends FhirR4Extendible1 {
 
@@ -23,8 +21,7 @@ public final class FindingInference extends FhirR4Extendible1 {
      * Finding data : contains extensions, fields and components linked with the finding.
      */
     @Generated
-    @JsonProperty(value = "finding")
-    private FhirR4Observation finding;
+    private final FhirR4Observation finding;
 
     /**
      * Creates an instance of FindingInference class.
@@ -32,8 +29,8 @@ public final class FindingInference extends FhirR4Extendible1 {
      * @param finding the finding value to set.
      */
     @Generated
-    @JsonCreator
-    private FindingInference(@JsonProperty(value = "finding") FhirR4Observation finding) {
+    private FindingInference(FhirR4Observation finding) {
+        setKind(RadiologyInsightsInferenceType.FINDING);
         this.finding = finding;
     }
 
@@ -46,4 +43,51 @@ private FindingInference(@JsonProperty(value = "finding") FhirR4Observation find
     public FhirR4Observation getFinding() {
         return this.finding;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("finding", this.finding);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FindingInference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FindingInference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FindingInference.
+     */
+    @Generated
+    public static FindingInference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RadiologyInsightsInferenceType kind = RadiologyInsightsInferenceType.FINDING;
+            List extension = null;
+            FhirR4Observation finding = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = RadiologyInsightsInferenceType.fromString(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("finding".equals(fieldName)) {
+                    finding = FhirR4Observation.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            FindingInference deserializedFindingInference = new FindingInference(finding);
+            deserializedFindingInference.setKind(kind);
+            deserializedFindingInference.setExtension(extension);
+            return deserializedFindingInference;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FindingOptions.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FindingOptions.java
index 110ecf6c316f..0051c04e4f01 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FindingOptions.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FindingOptions.java
@@ -5,21 +5,22 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Finding options.
  */
 @Fluent
-public final class FindingOptions {
+public final class FindingOptions implements JsonSerializable {
 
     /*
-     * If this is true, provide the sentence that contains the first token of the finding's clinical indicator (i.e.
-     * the medical problem), if there is one. This sentence is provided as an extension with url 'ci_sentence', next to
-     * the token evidence. Default is false.
+     * If this is true, provide the sentence that contains the first token of the finding's clinical indicator (i.e. the medical problem), if there is one. This sentence is provided as an extension with url 'ci_sentence', next to the token evidence. Default is false.
      */
     @Generated
-    @JsonProperty(value = "provideFocusedSentenceEvidence")
     private Boolean provideFocusedSentenceEvidence;
 
     /**
@@ -30,9 +31,7 @@ public FindingOptions() {
     }
 
     /**
-     * Get the provideFocusedSentenceEvidence property: If this is true, provide the sentence that contains the first
-     * token of the finding's clinical indicator (i.e. the medical problem), if there is one. This sentence is provided
-     * as an extension with url 'ci_sentence', next to the token evidence. Default is false.
+     * Get the provideFocusedSentenceEvidence property: If this is true, provide the sentence that contains the first token of the finding's clinical indicator (i.e. the medical problem), if there is one. This sentence is provided as an extension with url 'ci_sentence', next to the token evidence. Default is false.
      *
      * @return the provideFocusedSentenceEvidence value.
      */
@@ -42,9 +41,7 @@ public Boolean isProvideFocusedSentenceEvidence() {
     }
 
     /**
-     * Set the provideFocusedSentenceEvidence property: If this is true, provide the sentence that contains the first
-     * token of the finding's clinical indicator (i.e. the medical problem), if there is one. This sentence is provided
-     * as an extension with url 'ci_sentence', next to the token evidence. Default is false.
+     * Set the provideFocusedSentenceEvidence property: If this is true, provide the sentence that contains the first token of the finding's clinical indicator (i.e. the medical problem), if there is one. This sentence is provided as an extension with url 'ci_sentence', next to the token evidence. Default is false.
      *
      * @param provideFocusedSentenceEvidence the provideFocusedSentenceEvidence value to set.
      * @return the FindingOptions object itself.
@@ -54,4 +51,40 @@ public FindingOptions setProvideFocusedSentenceEvidence(Boolean provideFocusedSe
         this.provideFocusedSentenceEvidence = provideFocusedSentenceEvidence;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeBooleanField("provideFocusedSentenceEvidence", this.provideFocusedSentenceEvidence);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FindingOptions from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FindingOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FindingOptions.
+     */
+    @Generated
+    public static FindingOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FindingOptions deserializedFindingOptions = new FindingOptions();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("provideFocusedSentenceEvidence".equals(fieldName)) {
+                    deserializedFindingOptions.provideFocusedSentenceEvidence
+                        = reader.getNullable(JsonReader::getBoolean);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFindingOptions;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FollowupCommunicationInference.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FollowupCommunicationInference.java
index b3a59b4ad8e4..660e9d0eb83e 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FollowupCommunicationInference.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FollowupCommunicationInference.java
@@ -5,19 +5,17 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
- * Follow-up communication involves the exchange of important information, recommendations, or updates between
- * radiologists and other healthcare professionals involved in a patient's care.
+ * Follow-up communication involves the exchange of important information, recommendations, or updates between radiologists and other healthcare professionals involved in a patient's care.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("followupCommunication")
 @Immutable
 public final class FollowupCommunicationInference extends FhirR4Extendible1 {
 
@@ -25,22 +23,19 @@ public final class FollowupCommunicationInference extends FhirR4Extendible1 {
      * Communication date and time.
      */
     @Generated
-    @JsonProperty(value = "dateTime")
     private List dateTime;
 
     /*
      * Recipient of the communication.
      */
     @Generated
-    @JsonProperty(value = "recipient")
     private List recipient;
 
     /*
      * Communication was acknowledged.
      */
     @Generated
-    @JsonProperty(value = "wasAcknowledged")
-    private boolean wasAcknowledged;
+    private final boolean wasAcknowledged;
 
     /**
      * Creates an instance of FollowupCommunicationInference class.
@@ -48,8 +43,8 @@ public final class FollowupCommunicationInference extends FhirR4Extendible1 {
      * @param wasAcknowledged the wasAcknowledged value to set.
      */
     @Generated
-    @JsonCreator
-    private FollowupCommunicationInference(@JsonProperty(value = "wasAcknowledged") boolean wasAcknowledged) {
+    private FollowupCommunicationInference(boolean wasAcknowledged) {
+        setKind(RadiologyInsightsInferenceType.FOLLOWUP_COMMUNICATION);
         this.wasAcknowledged = wasAcknowledged;
     }
 
@@ -82,4 +77,65 @@ public List getRecipient() {
     public boolean isWasAcknowledged() {
         return this.wasAcknowledged;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeBooleanField("wasAcknowledged", this.wasAcknowledged);
+        jsonWriter.writeArrayField("dateTime", this.dateTime, (writer, element) -> writer
+            .writeString(element == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(element)));
+        jsonWriter.writeArrayField("recipient", this.recipient,
+            (writer, element) -> writer.writeString(element == null ? null : element.toString()));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FollowupCommunicationInference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FollowupCommunicationInference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FollowupCommunicationInference.
+     */
+    @Generated
+    public static FollowupCommunicationInference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RadiologyInsightsInferenceType kind = RadiologyInsightsInferenceType.FOLLOWUP_COMMUNICATION;
+            List extension = null;
+            boolean wasAcknowledged = false;
+            List dateTime = null;
+            List recipient = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = RadiologyInsightsInferenceType.fromString(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("wasAcknowledged".equals(fieldName)) {
+                    wasAcknowledged = reader.getBoolean();
+                } else if ("dateTime".equals(fieldName)) {
+                    dateTime = reader.readArray(reader1 -> reader1
+                        .getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString())));
+                } else if ("recipient".equals(fieldName)) {
+                    recipient = reader.readArray(reader1 -> MedicalProfessionalType.fromString(reader1.getString()));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            FollowupCommunicationInference deserializedFollowupCommunicationInference
+                = new FollowupCommunicationInference(wasAcknowledged);
+            deserializedFollowupCommunicationInference.setKind(kind);
+            deserializedFollowupCommunicationInference.setExtension(extension);
+            deserializedFollowupCommunicationInference.dateTime = dateTime;
+            deserializedFollowupCommunicationInference.recipient = recipient;
+            return deserializedFollowupCommunicationInference;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FollowupRecommendationInference.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FollowupRecommendationInference.java
index e74e2e46fabd..b1e0ab09d0d5 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FollowupRecommendationInference.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FollowupRecommendationInference.java
@@ -5,18 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
- * Follow-up recommendations offer guidance to healthcare providers on managing and monitoring patients based on the
- * findings of imaging studies.
+ * Follow-up recommendations offer guidance to healthcare providers on managing and monitoring patients based on the findings of imaging studies.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("followupRecommendation")
 @Immutable
 public final class FollowupRecommendationInference extends FhirR4Extendible1 {
 
@@ -24,61 +21,49 @@ public final class FollowupRecommendationInference extends FhirR4Extendible1 {
      * Date and time are displayed when the procedure is recommended to be done at a specific point in time.
      */
     @Generated
-    @JsonProperty(value = "effectiveDateTime")
     private String effectiveDateTime;
 
     /*
      * The period is shown if a specific period is mentioned, with a start and end date-time.
      */
     @Generated
-    @JsonProperty(value = "effectivePeriod")
     private FhirR4Period effectivePeriod;
 
     /*
      * Findings related to the recommendation.
      */
     @Generated
-    @JsonProperty(value = "findings")
     private List findings;
 
     /*
-     * The conditional value indicates whether or not the sentence containing the recommendation includes a conditional
-     * statement. Keywords for conditional statements include 'if', 'when', 'unless', and so on.
+     * The conditional value indicates whether or not the sentence containing the recommendation includes a conditional statement. Keywords for conditional statements include 'if', 'when', 'unless', and so on.
      */
     @Generated
-    @JsonProperty(value = "isConditional")
-    private boolean isConditional;
+    private final boolean isConditional;
 
     /*
-     * The option value indicates whether or not the sentence containing the recommendation includes an optional
-     * statement. Keywords for optional statements include 'recommend', 'consider', and so on.
+     * The option value indicates whether or not the sentence containing the recommendation includes an optional statement. Keywords for optional statements include 'recommend', 'consider', and so on.
      */
     @Generated
-    @JsonProperty(value = "isOption")
-    private boolean isOption;
+    private final boolean isOption;
 
     /*
-     * The guideline value indicates whether or not the recommendation is part of a guideline section that compiles all
-     * recommendations applicable to various findings.
+     * The guideline value indicates whether or not the recommendation is part of a guideline section that compiles all recommendations applicable to various findings.
      */
     @Generated
-    @JsonProperty(value = "isGuideline")
-    private boolean isGuideline;
+    private final boolean isGuideline;
 
     /*
-     * Hedging refers to ambiguous, vague or imprecise language within the sentence of the recommendation. Keywords for
-     * hedging are 'can be','may be',and so on.
+     * Hedging refers to ambiguous, vague or imprecise language within the sentence of the recommendation. Keywords for hedging are 'can be','may be',and so on.
      */
     @Generated
-    @JsonProperty(value = "isHedging")
-    private boolean isHedging;
+    private final boolean isHedging;
 
     /*
      * The procedure recommendation can be a generic procedure or an imaging procedure.
      */
     @Generated
-    @JsonProperty(value = "recommendedProcedure")
-    private ProcedureRecommendation recommendedProcedure;
+    private final ProcedureRecommendation recommendedProcedure;
 
     /**
      * Creates an instance of FollowupRecommendationInference class.
@@ -90,11 +75,9 @@ public final class FollowupRecommendationInference extends FhirR4Extendible1 {
      * @param recommendedProcedure the recommendedProcedure value to set.
      */
     @Generated
-    @JsonCreator
-    private FollowupRecommendationInference(@JsonProperty(value = "isConditional") boolean isConditional,
-        @JsonProperty(value = "isOption") boolean isOption, @JsonProperty(value = "isGuideline") boolean isGuideline,
-        @JsonProperty(value = "isHedging") boolean isHedging,
-        @JsonProperty(value = "recommendedProcedure") ProcedureRecommendation recommendedProcedure) {
+    private FollowupRecommendationInference(boolean isConditional, boolean isOption, boolean isGuideline,
+        boolean isHedging, ProcedureRecommendation recommendedProcedure) {
+        setKind(RadiologyInsightsInferenceType.FOLLOWUP_RECOMMENDATION);
         this.isConditional = isConditional;
         this.isOption = isOption;
         this.isGuideline = isGuideline;
@@ -103,8 +86,7 @@ private FollowupRecommendationInference(@JsonProperty(value = "isConditional") b
     }
 
     /**
-     * Get the effectiveDateTime property: Date and time are displayed when the procedure is recommended to be done at
-     * a specific point in time.
+     * Get the effectiveDateTime property: Date and time are displayed when the procedure is recommended to be done at a specific point in time.
      *
      * @return the effectiveDateTime value.
      */
@@ -114,8 +96,7 @@ public String getEffectiveDateTime() {
     }
 
     /**
-     * Get the effectivePeriod property: The period is shown if a specific period is mentioned, with a start and end
-     * date-time.
+     * Get the effectivePeriod property: The period is shown if a specific period is mentioned, with a start and end date-time.
      *
      * @return the effectivePeriod value.
      */
@@ -135,9 +116,7 @@ public List getFindings() {
     }
 
     /**
-     * Get the isConditional property: The conditional value indicates whether or not the sentence containing the
-     * recommendation includes a conditional statement. Keywords for conditional statements include 'if', 'when',
-     * 'unless', and so on.
+     * Get the isConditional property: The conditional value indicates whether or not the sentence containing the recommendation includes a conditional statement. Keywords for conditional statements include 'if', 'when', 'unless', and so on.
      *
      * @return the isConditional value.
      */
@@ -147,8 +126,7 @@ public boolean isConditional() {
     }
 
     /**
-     * Get the isOption property: The option value indicates whether or not the sentence containing the recommendation
-     * includes an optional statement. Keywords for optional statements include 'recommend', 'consider', and so on.
+     * Get the isOption property: The option value indicates whether or not the sentence containing the recommendation includes an optional statement. Keywords for optional statements include 'recommend', 'consider', and so on.
      *
      * @return the isOption value.
      */
@@ -158,8 +136,7 @@ public boolean isOption() {
     }
 
     /**
-     * Get the isGuideline property: The guideline value indicates whether or not the recommendation is part of a
-     * guideline section that compiles all recommendations applicable to various findings.
+     * Get the isGuideline property: The guideline value indicates whether or not the recommendation is part of a guideline section that compiles all recommendations applicable to various findings.
      *
      * @return the isGuideline value.
      */
@@ -169,8 +146,7 @@ public boolean isGuideline() {
     }
 
     /**
-     * Get the isHedging property: Hedging refers to ambiguous, vague or imprecise language within the sentence of the
-     * recommendation. Keywords for hedging are 'can be','may be',and so on.
+     * Get the isHedging property: Hedging refers to ambiguous, vague or imprecise language within the sentence of the recommendation. Keywords for hedging are 'can be','may be',and so on.
      *
      * @return the isHedging value.
      */
@@ -180,8 +156,7 @@ public boolean isHedging() {
     }
 
     /**
-     * Get the recommendedProcedure property: The procedure recommendation can be a generic procedure or an imaging
-     * procedure.
+     * Get the recommendedProcedure property: The procedure recommendation can be a generic procedure or an imaging procedure.
      *
      * @return the recommendedProcedure value.
      */
@@ -189,4 +164,84 @@ public boolean isHedging() {
     public ProcedureRecommendation getRecommendedProcedure() {
         return this.recommendedProcedure;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeBooleanField("isConditional", this.isConditional);
+        jsonWriter.writeBooleanField("isOption", this.isOption);
+        jsonWriter.writeBooleanField("isGuideline", this.isGuideline);
+        jsonWriter.writeBooleanField("isHedging", this.isHedging);
+        jsonWriter.writeJsonField("recommendedProcedure", this.recommendedProcedure);
+        jsonWriter.writeStringField("effectiveDateTime", this.effectiveDateTime);
+        jsonWriter.writeJsonField("effectivePeriod", this.effectivePeriod);
+        jsonWriter.writeArrayField("findings", this.findings, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FollowupRecommendationInference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FollowupRecommendationInference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FollowupRecommendationInference.
+     */
+    @Generated
+    public static FollowupRecommendationInference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RadiologyInsightsInferenceType kind = RadiologyInsightsInferenceType.FOLLOWUP_RECOMMENDATION;
+            List extension = null;
+            boolean isConditional = false;
+            boolean isOption = false;
+            boolean isGuideline = false;
+            boolean isHedging = false;
+            ProcedureRecommendation recommendedProcedure = null;
+            String effectiveDateTime = null;
+            FhirR4Period effectivePeriod = null;
+            List findings = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = RadiologyInsightsInferenceType.fromString(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("isConditional".equals(fieldName)) {
+                    isConditional = reader.getBoolean();
+                } else if ("isOption".equals(fieldName)) {
+                    isOption = reader.getBoolean();
+                } else if ("isGuideline".equals(fieldName)) {
+                    isGuideline = reader.getBoolean();
+                } else if ("isHedging".equals(fieldName)) {
+                    isHedging = reader.getBoolean();
+                } else if ("recommendedProcedure".equals(fieldName)) {
+                    recommendedProcedure = ProcedureRecommendation.fromJson(reader);
+                } else if ("effectiveDateTime".equals(fieldName)) {
+                    effectiveDateTime = reader.getString();
+                } else if ("effectivePeriod".equals(fieldName)) {
+                    effectivePeriod = FhirR4Period.fromJson(reader);
+                } else if ("findings".equals(fieldName)) {
+                    findings = reader.readArray(reader1 -> FhirR4Extendible2.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            FollowupRecommendationInference deserializedFollowupRecommendationInference
+                = new FollowupRecommendationInference(isConditional, isOption, isGuideline, isHedging,
+                    recommendedProcedure);
+            deserializedFollowupRecommendationInference.setKind(kind);
+            deserializedFollowupRecommendationInference.setExtension(extension);
+            deserializedFollowupRecommendationInference.effectiveDateTime = effectiveDateTime;
+            deserializedFollowupRecommendationInference.effectivePeriod = effectivePeriod;
+            deserializedFollowupRecommendationInference.findings = findings;
+            return deserializedFollowupRecommendationInference;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FollowupRecommendationOptions.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FollowupRecommendationOptions.java
index 10f3f5d56d15..84662b19a332 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FollowupRecommendationOptions.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/FollowupRecommendationOptions.java
@@ -5,35 +5,34 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Follow-up recommendation options.
  */
 @Fluent
-public final class FollowupRecommendationOptions {
+public final class FollowupRecommendationOptions implements JsonSerializable {
 
     /*
      * Include/Exclude follow-up recommendations without a specific radiology procedure. Default is false.
      */
     @Generated
-    @JsonProperty(value = "includeRecommendationsWithNoSpecifiedModality")
     private Boolean includeRecommendationsWithNoSpecifiedModality;
 
     /*
      * Include/Exclude follow-up recommendations in references to a guideline or article. Default is false.
      */
     @Generated
-    @JsonProperty(value = "includeRecommendationsInReferences")
     private Boolean includeRecommendationsInReferences;
 
     /*
-     * If this is true, provide one or more sentences as evidence for the recommendation, next to the token evidence.
-     * The start and end positions of these sentences will be put in an extension with url 'modality_sentences'.
-     * Default is false.
+     * If this is true, provide one or more sentences as evidence for the recommendation, next to the token evidence. The start and end positions of these sentences will be put in an extension with url 'modality_sentences'. Default is false.
      */
     @Generated
-    @JsonProperty(value = "provideFocusedSentenceEvidence")
     private Boolean provideFocusedSentenceEvidence;
 
     /**
@@ -44,8 +43,7 @@ public FollowupRecommendationOptions() {
     }
 
     /**
-     * Get the includeRecommendationsWithNoSpecifiedModality property: Include/Exclude follow-up recommendations
-     * without a specific radiology procedure. Default is false.
+     * Get the includeRecommendationsWithNoSpecifiedModality property: Include/Exclude follow-up recommendations without a specific radiology procedure. Default is false.
      *
      * @return the includeRecommendationsWithNoSpecifiedModality value.
      */
@@ -55,11 +53,9 @@ public Boolean isIncludeRecommendationsWithNoSpecifiedModality() {
     }
 
     /**
-     * Set the includeRecommendationsWithNoSpecifiedModality property: Include/Exclude follow-up recommendations
-     * without a specific radiology procedure. Default is false.
+     * Set the includeRecommendationsWithNoSpecifiedModality property: Include/Exclude follow-up recommendations without a specific radiology procedure. Default is false.
      *
-     * @param includeRecommendationsWithNoSpecifiedModality the includeRecommendationsWithNoSpecifiedModality value to
-     * set.
+     * @param includeRecommendationsWithNoSpecifiedModality the includeRecommendationsWithNoSpecifiedModality value to set.
      * @return the FollowupRecommendationOptions object itself.
      */
     @Generated
@@ -70,8 +66,7 @@ public Boolean isIncludeRecommendationsWithNoSpecifiedModality() {
     }
 
     /**
-     * Get the includeRecommendationsInReferences property: Include/Exclude follow-up recommendations in references to
-     * a guideline or article. Default is false.
+     * Get the includeRecommendationsInReferences property: Include/Exclude follow-up recommendations in references to a guideline or article. Default is false.
      *
      * @return the includeRecommendationsInReferences value.
      */
@@ -81,8 +76,7 @@ public Boolean isIncludeRecommendationsInReferences() {
     }
 
     /**
-     * Set the includeRecommendationsInReferences property: Include/Exclude follow-up recommendations in references to
-     * a guideline or article. Default is false.
+     * Set the includeRecommendationsInReferences property: Include/Exclude follow-up recommendations in references to a guideline or article. Default is false.
      *
      * @param includeRecommendationsInReferences the includeRecommendationsInReferences value to set.
      * @return the FollowupRecommendationOptions object itself.
@@ -95,9 +89,7 @@ public Boolean isIncludeRecommendationsInReferences() {
     }
 
     /**
-     * Get the provideFocusedSentenceEvidence property: If this is true, provide one or more sentences as evidence for
-     * the recommendation, next to the token evidence. The start and end positions of these sentences will be put in an
-     * extension with url 'modality_sentences'. Default is false.
+     * Get the provideFocusedSentenceEvidence property: If this is true, provide one or more sentences as evidence for the recommendation, next to the token evidence. The start and end positions of these sentences will be put in an extension with url 'modality_sentences'. Default is false.
      *
      * @return the provideFocusedSentenceEvidence value.
      */
@@ -107,9 +99,7 @@ public Boolean isProvideFocusedSentenceEvidence() {
     }
 
     /**
-     * Set the provideFocusedSentenceEvidence property: If this is true, provide one or more sentences as evidence for
-     * the recommendation, next to the token evidence. The start and end positions of these sentences will be put in an
-     * extension with url 'modality_sentences'. Default is false.
+     * Set the provideFocusedSentenceEvidence property: If this is true, provide one or more sentences as evidence for the recommendation, next to the token evidence. The start and end positions of these sentences will be put in an extension with url 'modality_sentences'. Default is false.
      *
      * @param provideFocusedSentenceEvidence the provideFocusedSentenceEvidence value to set.
      * @return the FollowupRecommendationOptions object itself.
@@ -119,4 +109,50 @@ public FollowupRecommendationOptions setProvideFocusedSentenceEvidence(Boolean p
         this.provideFocusedSentenceEvidence = provideFocusedSentenceEvidence;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeBooleanField("includeRecommendationsWithNoSpecifiedModality",
+            this.includeRecommendationsWithNoSpecifiedModality);
+        jsonWriter.writeBooleanField("includeRecommendationsInReferences", this.includeRecommendationsInReferences);
+        jsonWriter.writeBooleanField("provideFocusedSentenceEvidence", this.provideFocusedSentenceEvidence);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FollowupRecommendationOptions from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FollowupRecommendationOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the FollowupRecommendationOptions.
+     */
+    @Generated
+    public static FollowupRecommendationOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FollowupRecommendationOptions deserializedFollowupRecommendationOptions
+                = new FollowupRecommendationOptions();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("includeRecommendationsWithNoSpecifiedModality".equals(fieldName)) {
+                    deserializedFollowupRecommendationOptions.includeRecommendationsWithNoSpecifiedModality
+                        = reader.getNullable(JsonReader::getBoolean);
+                } else if ("includeRecommendationsInReferences".equals(fieldName)) {
+                    deserializedFollowupRecommendationOptions.includeRecommendationsInReferences
+                        = reader.getNullable(JsonReader::getBoolean);
+                } else if ("provideFocusedSentenceEvidence".equals(fieldName)) {
+                    deserializedFollowupRecommendationOptions.provideFocusedSentenceEvidence
+                        = reader.getNullable(JsonReader::getBoolean);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedFollowupRecommendationOptions;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/GenericProcedureRecommendation.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/GenericProcedureRecommendation.java
index 58893dcaaec6..0abf10bdf654 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/GenericProcedureRecommendation.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/GenericProcedureRecommendation.java
@@ -5,16 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Generic procedure information.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("genericProcedureRecommendation")
 @Immutable
 public final class GenericProcedureRecommendation extends ProcedureRecommendation {
 
@@ -22,14 +20,12 @@ public final class GenericProcedureRecommendation extends ProcedureRecommendatio
      * Procedure modality : SNOMED CT code.
      */
     @Generated
-    @JsonProperty(value = "code")
-    private FhirR4CodeableConcept code;
+    private final FhirR4CodeableConcept code;
 
     /*
      * Procedure description : MANAGEMENT PROCEDURE (PROCEDURE) or CONSULTATION (PROCEDURE) based on SNOMED CT.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /**
@@ -38,8 +34,8 @@ public final class GenericProcedureRecommendation extends ProcedureRecommendatio
      * @param code the code value to set.
      */
     @Generated
-    @JsonCreator
-    private GenericProcedureRecommendation(@JsonProperty(value = "code") FhirR4CodeableConcept code) {
+    private GenericProcedureRecommendation(FhirR4CodeableConcept code) {
+        setKind("genericProcedureRecommendation");
         this.code = code;
     }
 
@@ -54,8 +50,7 @@ public FhirR4CodeableConcept getCode() {
     }
 
     /**
-     * Get the description property: Procedure description : MANAGEMENT PROCEDURE (PROCEDURE) or CONSULTATION
-     * (PROCEDURE) based on SNOMED CT.
+     * Get the description property: Procedure description : MANAGEMENT PROCEDURE (PROCEDURE) or CONSULTATION (PROCEDURE) based on SNOMED CT.
      *
      * @return the description value.
      */
@@ -63,4 +58,52 @@ public FhirR4CodeableConcept getCode() {
     public String getDescription() {
         return this.description;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeJsonField("code", this.code);
+        jsonWriter.writeStringField("description", this.description);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of GenericProcedureRecommendation from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of GenericProcedureRecommendation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the GenericProcedureRecommendation.
+     */
+    @Generated
+    public static GenericProcedureRecommendation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String kind = "genericProcedureRecommendation";
+            FhirR4CodeableConcept code = null;
+            String description = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("code".equals(fieldName)) {
+                    code = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            GenericProcedureRecommendation deserializedGenericProcedureRecommendation
+                = new GenericProcedureRecommendation(code);
+            deserializedGenericProcedureRecommendation.setKind(kind);
+            deserializedGenericProcedureRecommendation.description = description;
+            return deserializedGenericProcedureRecommendation;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ImagingProcedure.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ImagingProcedure.java
index 6d404d2334f9..0df4d535774b 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ImagingProcedure.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ImagingProcedure.java
@@ -5,48 +5,46 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Imaging procedure.
  */
 @Immutable
-public final class ImagingProcedure {
+public final class ImagingProcedure implements JsonSerializable {
 
     /*
      * Modality : SNOMED CT code.
      */
     @Generated
-    @JsonProperty(value = "modality")
-    private FhirR4CodeableConcept modality;
+    private final FhirR4CodeableConcept modality;
 
     /*
      * Anatomy : SNOMED CT code.
      */
     @Generated
-    @JsonProperty(value = "anatomy")
-    private FhirR4CodeableConcept anatomy;
+    private final FhirR4CodeableConcept anatomy;
 
     /*
      * Laterality : SNOMED CT code.
      */
     @Generated
-    @JsonProperty(value = "laterality")
     private FhirR4CodeableConcept laterality;
 
     /*
      * Contrast : see RadiologyCodeWithTypes (below).
      */
     @Generated
-    @JsonProperty(value = "contrast")
     private RadiologyCodeWithTypes contrast;
 
     /*
      * View : see RadiologyCodeWithTypes (below).
      */
     @Generated
-    @JsonProperty(value = "view")
     private RadiologyCodeWithTypes view;
 
     /**
@@ -56,9 +54,7 @@ public final class ImagingProcedure {
      * @param anatomy the anatomy value to set.
      */
     @Generated
-    @JsonCreator
-    private ImagingProcedure(@JsonProperty(value = "modality") FhirR4CodeableConcept modality,
-        @JsonProperty(value = "anatomy") FhirR4CodeableConcept anatomy) {
+    private ImagingProcedure(FhirR4CodeableConcept modality, FhirR4CodeableConcept anatomy) {
         this.modality = modality;
         this.anatomy = anatomy;
     }
@@ -112,4 +108,60 @@ public RadiologyCodeWithTypes getContrast() {
     public RadiologyCodeWithTypes getView() {
         return this.view;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeJsonField("modality", this.modality);
+        jsonWriter.writeJsonField("anatomy", this.anatomy);
+        jsonWriter.writeJsonField("laterality", this.laterality);
+        jsonWriter.writeJsonField("contrast", this.contrast);
+        jsonWriter.writeJsonField("view", this.view);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ImagingProcedure from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ImagingProcedure if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ImagingProcedure.
+     */
+    @Generated
+    public static ImagingProcedure fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4CodeableConcept modality = null;
+            FhirR4CodeableConcept anatomy = null;
+            FhirR4CodeableConcept laterality = null;
+            RadiologyCodeWithTypes contrast = null;
+            RadiologyCodeWithTypes view = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("modality".equals(fieldName)) {
+                    modality = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("anatomy".equals(fieldName)) {
+                    anatomy = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("laterality".equals(fieldName)) {
+                    laterality = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("contrast".equals(fieldName)) {
+                    contrast = RadiologyCodeWithTypes.fromJson(reader);
+                } else if ("view".equals(fieldName)) {
+                    view = RadiologyCodeWithTypes.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            ImagingProcedure deserializedImagingProcedure = new ImagingProcedure(modality, anatomy);
+            deserializedImagingProcedure.laterality = laterality;
+            deserializedImagingProcedure.contrast = contrast;
+            deserializedImagingProcedure.view = view;
+            return deserializedImagingProcedure;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ImagingProcedureRecommendation.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ImagingProcedureRecommendation.java
index 9a6396efd0b7..68ab37f518f4 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ImagingProcedureRecommendation.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ImagingProcedureRecommendation.java
@@ -5,17 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Imaging procedures.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("imagingProcedureRecommendation")
 @Immutable
 public final class ImagingProcedureRecommendation extends ProcedureRecommendation {
 
@@ -23,15 +21,13 @@ public final class ImagingProcedureRecommendation extends ProcedureRecommendatio
      * LOINC codes for the procedure.
      */
     @Generated
-    @JsonProperty(value = "procedureCodes")
     private List procedureCodes;
 
     /*
      * Imaging procedures.
      */
     @Generated
-    @JsonProperty(value = "imagingProcedures")
-    private List imagingProcedures;
+    private final List imagingProcedures;
 
     /**
      * Creates an instance of ImagingProcedureRecommendation class.
@@ -39,9 +35,8 @@ public final class ImagingProcedureRecommendation extends ProcedureRecommendatio
      * @param imagingProcedures the imagingProcedures value to set.
      */
     @Generated
-    @JsonCreator
-    private ImagingProcedureRecommendation(
-        @JsonProperty(value = "imagingProcedures") List imagingProcedures) {
+    private ImagingProcedureRecommendation(List imagingProcedures) {
+        setKind("imagingProcedureRecommendation");
         this.imagingProcedures = imagingProcedures;
     }
 
@@ -64,4 +59,54 @@ public List getProcedureCodes() {
     public List getImagingProcedures() {
         return this.imagingProcedures;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind());
+        jsonWriter.writeArrayField("imagingProcedures", this.imagingProcedures,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("procedureCodes", this.procedureCodes,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ImagingProcedureRecommendation from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ImagingProcedureRecommendation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ImagingProcedureRecommendation.
+     */
+    @Generated
+    public static ImagingProcedureRecommendation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String kind = "imagingProcedureRecommendation";
+            List imagingProcedures = null;
+            List procedureCodes = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = reader.getString();
+                } else if ("imagingProcedures".equals(fieldName)) {
+                    imagingProcedures = reader.readArray(reader1 -> ImagingProcedure.fromJson(reader1));
+                } else if ("procedureCodes".equals(fieldName)) {
+                    procedureCodes = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            ImagingProcedureRecommendation deserializedImagingProcedureRecommendation
+                = new ImagingProcedureRecommendation(imagingProcedures);
+            deserializedImagingProcedureRecommendation.setKind(kind);
+            deserializedImagingProcedureRecommendation.procedureCodes = procedureCodes;
+            return deserializedImagingProcedureRecommendation;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/LateralityDiscrepancyInference.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/LateralityDiscrepancyInference.java
index feb44634ca93..5f5f775ba52e 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/LateralityDiscrepancyInference.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/LateralityDiscrepancyInference.java
@@ -5,18 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.List;
 
 /**
- * A laterality mismatch occurs when there is a discrepancy between the clinical documentation and the ordered
- * procedure (orderLateralityMismatch), a contradiction within the clinical document (textLateralityContradiction), or
- * when no laterality is mentioned (textLateralityMissing).
+ * A laterality mismatch occurs when there is a discrepancy between the clinical documentation and the ordered procedure (orderLateralityMismatch), a contradiction within the clinical document (textLateralityContradiction), or when no laterality is mentioned (textLateralityMissing).
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("lateralityDiscrepancy")
 @Immutable
 public final class LateralityDiscrepancyInference extends FhirR4Extendible1 {
 
@@ -24,15 +21,13 @@ public final class LateralityDiscrepancyInference extends FhirR4Extendible1 {
      * Laterality indication : SNOMED CT code for laterality qualifier value.
      */
     @Generated
-    @JsonProperty(value = "lateralityIndication")
     private FhirR4CodeableConcept lateralityIndication;
 
     /*
      * Mismatch type : orderLateralityMismatch, textLateralityContradiction, textLateralityMissing.
      */
     @Generated
-    @JsonProperty(value = "discrepancyType")
-    private LateralityDiscrepancyType discrepancyType;
+    private final LateralityDiscrepancyType discrepancyType;
 
     /**
      * Creates an instance of LateralityDiscrepancyInference class.
@@ -40,9 +35,8 @@ public final class LateralityDiscrepancyInference extends FhirR4Extendible1 {
      * @param discrepancyType the discrepancyType value to set.
      */
     @Generated
-    @JsonCreator
-    private LateralityDiscrepancyInference(
-        @JsonProperty(value = "discrepancyType") LateralityDiscrepancyType discrepancyType) {
+    private LateralityDiscrepancyInference(LateralityDiscrepancyType discrepancyType) {
+        setKind(RadiologyInsightsInferenceType.LATERALITY_DISCREPANCY);
         this.discrepancyType = discrepancyType;
     }
 
@@ -57,8 +51,7 @@ public FhirR4CodeableConcept getLateralityIndication() {
     }
 
     /**
-     * Get the discrepancyType property: Mismatch type : orderLateralityMismatch, textLateralityContradiction,
-     * textLateralityMissing.
+     * Get the discrepancyType property: Mismatch type : orderLateralityMismatch, textLateralityContradiction, textLateralityMissing.
      *
      * @return the discrepancyType value.
      */
@@ -66,4 +59,58 @@ public FhirR4CodeableConcept getLateralityIndication() {
     public LateralityDiscrepancyType getDiscrepancyType() {
         return this.discrepancyType;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("discrepancyType",
+            this.discrepancyType == null ? null : this.discrepancyType.toString());
+        jsonWriter.writeJsonField("lateralityIndication", this.lateralityIndication);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of LateralityDiscrepancyInference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of LateralityDiscrepancyInference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the LateralityDiscrepancyInference.
+     */
+    @Generated
+    public static LateralityDiscrepancyInference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RadiologyInsightsInferenceType kind = RadiologyInsightsInferenceType.LATERALITY_DISCREPANCY;
+            List extension = null;
+            LateralityDiscrepancyType discrepancyType = null;
+            FhirR4CodeableConcept lateralityIndication = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = RadiologyInsightsInferenceType.fromString(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("discrepancyType".equals(fieldName)) {
+                    discrepancyType = LateralityDiscrepancyType.fromString(reader.getString());
+                } else if ("lateralityIndication".equals(fieldName)) {
+                    lateralityIndication = FhirR4CodeableConcept.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            LateralityDiscrepancyInference deserializedLateralityDiscrepancyInference
+                = new LateralityDiscrepancyInference(discrepancyType);
+            deserializedLateralityDiscrepancyInference.setKind(kind);
+            deserializedLateralityDiscrepancyInference.setExtension(extension);
+            deserializedLateralityDiscrepancyInference.lateralityIndication = lateralityIndication;
+            return deserializedLateralityDiscrepancyInference;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/LateralityDiscrepancyType.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/LateralityDiscrepancyType.java
index 3574d73956d5..a8fb60ebeeea 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/LateralityDiscrepancyType.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/LateralityDiscrepancyType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -49,7 +48,6 @@ public LateralityDiscrepancyType() {
      * @return the corresponding LateralityDiscrepancyType.
      */
     @Generated
-    @JsonCreator
     public static LateralityDiscrepancyType fromString(String name) {
         return fromString(name, LateralityDiscrepancyType.class);
     }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/LimitedOrderDiscrepancyInference.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/LimitedOrderDiscrepancyInference.java
index 7c8d03e6adaa..98463ab6030e 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/LimitedOrderDiscrepancyInference.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/LimitedOrderDiscrepancyInference.java
@@ -5,18 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
- * A limited order discrepancy occurs when there is a limited order, but all body parts and measurements that are
- * needed for a complete order are present in the document.
+ * A limited order discrepancy occurs when there is a limited order, but all body parts and measurements that are needed for a complete order are present in the document.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("limitedOrderDiscrepancy")
 @Immutable
 public final class LimitedOrderDiscrepancyInference extends FhirR4Extendible1 {
 
@@ -24,21 +21,18 @@ public final class LimitedOrderDiscrepancyInference extends FhirR4Extendible1 {
      * Order type : CPT ultrasound complete code for abdomen, retroperitoneal, pelvis or breast.
      */
     @Generated
-    @JsonProperty(value = "orderType")
-    private FhirR4CodeableConcept orderType;
+    private final FhirR4CodeableConcept orderType;
 
     /*
      * List of body parts found in the document : SNOMED CT codes.
      */
     @Generated
-    @JsonProperty(value = "presentBodyParts")
     private List presentBodyParts;
 
     /*
      * List of body parts that are measured according to the document : SNOMED CT codes.
      */
     @Generated
-    @JsonProperty(value = "presentBodyPartMeasurements")
     private List presentBodyPartMeasurements;
 
     /**
@@ -47,14 +41,13 @@ public final class LimitedOrderDiscrepancyInference extends FhirR4Extendible1 {
      * @param orderType the orderType value to set.
      */
     @Generated
-    @JsonCreator
-    private LimitedOrderDiscrepancyInference(@JsonProperty(value = "orderType") FhirR4CodeableConcept orderType) {
+    private LimitedOrderDiscrepancyInference(FhirR4CodeableConcept orderType) {
+        setKind(RadiologyInsightsInferenceType.LIMITED_ORDER_DISCREPANCY);
         this.orderType = orderType;
     }
 
     /**
-     * Get the orderType property: Order type : CPT ultrasound complete code for abdomen, retroperitoneal, pelvis or
-     * breast.
+     * Get the orderType property: Order type : CPT ultrasound complete code for abdomen, retroperitoneal, pelvis or breast.
      *
      * @return the orderType value.
      */
@@ -74,8 +67,7 @@ public List getPresentBodyParts() {
     }
 
     /**
-     * Get the presentBodyPartMeasurements property: List of body parts that are measured according to the document :
-     * SNOMED CT codes.
+     * Get the presentBodyPartMeasurements property: List of body parts that are measured according to the document : SNOMED CT codes.
      *
      * @return the presentBodyPartMeasurements value.
      */
@@ -83,4 +75,64 @@ public List getPresentBodyParts() {
     public List getPresentBodyPartMeasurements() {
         return this.presentBodyPartMeasurements;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("orderType", this.orderType);
+        jsonWriter.writeArrayField("presentBodyParts", this.presentBodyParts,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("presentBodyPartMeasurements", this.presentBodyPartMeasurements,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of LimitedOrderDiscrepancyInference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of LimitedOrderDiscrepancyInference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the LimitedOrderDiscrepancyInference.
+     */
+    @Generated
+    public static LimitedOrderDiscrepancyInference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RadiologyInsightsInferenceType kind = RadiologyInsightsInferenceType.LIMITED_ORDER_DISCREPANCY;
+            List extension = null;
+            FhirR4CodeableConcept orderType = null;
+            List presentBodyParts = null;
+            List presentBodyPartMeasurements = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = RadiologyInsightsInferenceType.fromString(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("orderType".equals(fieldName)) {
+                    orderType = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("presentBodyParts".equals(fieldName)) {
+                    presentBodyParts = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else if ("presentBodyPartMeasurements".equals(fieldName)) {
+                    presentBodyPartMeasurements = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            LimitedOrderDiscrepancyInference deserializedLimitedOrderDiscrepancyInference
+                = new LimitedOrderDiscrepancyInference(orderType);
+            deserializedLimitedOrderDiscrepancyInference.setKind(kind);
+            deserializedLimitedOrderDiscrepancyInference.setExtension(extension);
+            deserializedLimitedOrderDiscrepancyInference.presentBodyParts = presentBodyParts;
+            deserializedLimitedOrderDiscrepancyInference.presentBodyPartMeasurements = presentBodyPartMeasurements;
+            return deserializedLimitedOrderDiscrepancyInference;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/MedicalProfessionalType.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/MedicalProfessionalType.java
index ea9fde7b4fad..58cd0418dc92 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/MedicalProfessionalType.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/MedicalProfessionalType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -60,7 +59,6 @@ public MedicalProfessionalType() {
      * @return the corresponding MedicalProfessionalType.
      */
     @Generated
-    @JsonCreator
     public static MedicalProfessionalType fromString(String name) {
         return fromString(name, MedicalProfessionalType.class);
     }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ObservationStatusCodeType.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ObservationStatusCodeType.java
index ea27ca699d29..5358b35058f7 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ObservationStatusCodeType.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ObservationStatusCodeType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -33,8 +32,7 @@ public final class ObservationStatusCodeType extends ExpandableStringEnum {
 
     /*
      * The patient's sex.
      */
     @Generated
-    @JsonProperty(value = "sex")
     private PatientSex sex;
 
     /*
      * The patient's date of birth.
      */
     @Generated
-    @JsonProperty(value = "birthDate")
     private LocalDate birthDate;
 
     /*
      * Known clinical information for the patient, structured.
      */
     @Generated
-    @JsonProperty(value = "clinicalInfo")
     private List clinicalInfo;
 
     /**
@@ -108,4 +110,47 @@ public PatientDetails setClinicalInfo(List clinicalInfo) {
         this.clinicalInfo = clinicalInfo;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("sex", this.sex == null ? null : this.sex.toString());
+        jsonWriter.writeStringField("birthDate", Objects.toString(this.birthDate, null));
+        jsonWriter.writeArrayField("clinicalInfo", this.clinicalInfo, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of PatientDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of PatientDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the PatientDetails.
+     */
+    @Generated
+    public static PatientDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            PatientDetails deserializedPatientDetails = new PatientDetails();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("sex".equals(fieldName)) {
+                    deserializedPatientDetails.sex = PatientSex.fromString(reader.getString());
+                } else if ("birthDate".equals(fieldName)) {
+                    deserializedPatientDetails.birthDate
+                        = reader.getNullable(nonNullReader -> LocalDate.parse(nonNullReader.getString()));
+                } else if ("clinicalInfo".equals(fieldName)) {
+                    List clinicalInfo = reader.readArray(reader1 -> FhirR4Resource.fromJson(reader1));
+                    deserializedPatientDetails.clinicalInfo = clinicalInfo;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedPatientDetails;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/PatientDocument.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/PatientDocument.java
index cb524cfe0b45..03156378faea 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/PatientDocument.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/PatientDocument.java
@@ -5,79 +5,74 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
  * A clinical document related to a patient. Document here is in the wide sense - not just a text document (note).
  */
 @Fluent
-public final class PatientDocument {
+public final class PatientDocument implements JsonSerializable {
 
     /*
      * The type of the patient document, such as 'note' (text document) or 'fhirBundle' (FHIR JSON document).
      */
     @Generated
-    @JsonProperty(value = "type")
-    private DocumentType type;
+    private final DocumentType type;
 
     /*
      * The type of the clinical document.
      */
     @Generated
-    @JsonProperty(value = "clinicalType")
     private ClinicalDocumentType clinicalType;
 
     /*
      * A given identifier for the document. Has to be unique across all documents for a single patient.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * A 2 letter ISO 639-1 representation of the language of the document.
      */
     @Generated
-    @JsonProperty(value = "language")
     private String language;
 
     /*
      * The date and time when the document was created.
      */
     @Generated
-    @JsonProperty(value = "createdDateTime")
     private OffsetDateTime createdDateTime;
 
     /*
      * Document author(s)
      */
     @Generated
-    @JsonProperty(value = "authors")
     private List authors;
 
     /*
      * specialty type the document
      */
     @Generated
-    @JsonProperty(value = "specialtyType")
     private SpecialtyType specialtyType;
 
     /*
      * Administrative metadata for the document.
      */
     @Generated
-    @JsonProperty(value = "administrativeMetadata")
     private DocumentAdministrativeMetadata administrativeMetadata;
 
     /*
      * The content of the patient document.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private DocumentContent content;
+    private final DocumentContent content;
 
     /**
      * Creates an instance of PatientDocument class.
@@ -87,17 +82,14 @@ public final class PatientDocument {
      * @param content the content value to set.
      */
     @Generated
-    @JsonCreator
-    public PatientDocument(@JsonProperty(value = "type") DocumentType type, @JsonProperty(value = "id") String id,
-        @JsonProperty(value = "content") DocumentContent content) {
+    public PatientDocument(DocumentType type, String id, DocumentContent content) {
         this.type = type;
         this.id = id;
         this.content = content;
     }
 
     /**
-     * Get the type property: The type of the patient document, such as 'note' (text document) or 'fhirBundle' (FHIR
-     * JSON document).
+     * Get the type property: The type of the patient document, such as 'note' (text document) or 'fhirBundle' (FHIR JSON document).
      *
      * @return the type value.
      */
@@ -129,8 +121,7 @@ public PatientDocument setClinicalType(ClinicalDocumentType clinicalType) {
     }
 
     /**
-     * Get the id property: A given identifier for the document. Has to be unique across all documents for a single
-     * patient.
+     * Get the id property: A given identifier for the document. Has to be unique across all documents for a single patient.
      *
      * @return the id value.
      */
@@ -258,4 +249,81 @@ public PatientDocument setAdministrativeMetadata(DocumentAdministrativeMetadata
     public DocumentContent getContent() {
         return this.content;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString());
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeJsonField("content", this.content);
+        jsonWriter.writeStringField("clinicalType", this.clinicalType == null ? null : this.clinicalType.toString());
+        jsonWriter.writeStringField("language", this.language);
+        jsonWriter.writeStringField("createdDateTime",
+            this.createdDateTime == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.createdDateTime));
+        jsonWriter.writeArrayField("authors", this.authors, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("specialtyType", this.specialtyType == null ? null : this.specialtyType.toString());
+        jsonWriter.writeJsonField("administrativeMetadata", this.administrativeMetadata);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of PatientDocument from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of PatientDocument if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the PatientDocument.
+     */
+    @Generated
+    public static PatientDocument fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DocumentType type = null;
+            String id = null;
+            DocumentContent content = null;
+            ClinicalDocumentType clinicalType = null;
+            String language = null;
+            OffsetDateTime createdDateTime = null;
+            List authors = null;
+            SpecialtyType specialtyType = null;
+            DocumentAdministrativeMetadata administrativeMetadata = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    type = DocumentType.fromString(reader.getString());
+                } else if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("content".equals(fieldName)) {
+                    content = DocumentContent.fromJson(reader);
+                } else if ("clinicalType".equals(fieldName)) {
+                    clinicalType = ClinicalDocumentType.fromString(reader.getString());
+                } else if ("language".equals(fieldName)) {
+                    language = reader.getString();
+                } else if ("createdDateTime".equals(fieldName)) {
+                    createdDateTime
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("authors".equals(fieldName)) {
+                    authors = reader.readArray(reader1 -> DocumentAuthor.fromJson(reader1));
+                } else if ("specialtyType".equals(fieldName)) {
+                    specialtyType = SpecialtyType.fromString(reader.getString());
+                } else if ("administrativeMetadata".equals(fieldName)) {
+                    administrativeMetadata = DocumentAdministrativeMetadata.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            PatientDocument deserializedPatientDocument = new PatientDocument(type, id, content);
+            deserializedPatientDocument.clinicalType = clinicalType;
+            deserializedPatientDocument.language = language;
+            deserializedPatientDocument.createdDateTime = createdDateTime;
+            deserializedPatientDocument.authors = authors;
+            deserializedPatientDocument.specialtyType = specialtyType;
+            deserializedPatientDocument.administrativeMetadata = administrativeMetadata;
+            return deserializedPatientDocument;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/PatientRecord.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/PatientRecord.java
index 4d4f030fa3dc..1f8efb80ce19 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/PatientRecord.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/PatientRecord.java
@@ -5,42 +5,41 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * A patient record, including their clinical information and data.
  */
 @Fluent
-public final class PatientRecord {
+public final class PatientRecord implements JsonSerializable {
 
     /*
      * A given identifier for the patient. Has to be unique across all patients in a single request.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * Patient structured information, including demographics and known structured clinical information.
      */
     @Generated
-    @JsonProperty(value = "info")
     private PatientDetails info;
 
     /*
      * Patient encounters/visits.
      */
     @Generated
-    @JsonProperty(value = "encounters")
     private List encounters;
 
     /*
      * Patient unstructured clinical data, given as documents.
      */
     @Generated
-    @JsonProperty(value = "patientDocuments")
     private List patientDocuments;
 
     /**
@@ -49,14 +48,12 @@ public final class PatientRecord {
      * @param id the id value to set.
      */
     @Generated
-    @JsonCreator
-    public PatientRecord(@JsonProperty(value = "id") String id) {
+    public PatientRecord(String id) {
         this.id = id;
     }
 
     /**
-     * Get the id property: A given identifier for the patient. Has to be unique across all patients in a single
-     * request.
+     * Get the id property: A given identifier for the patient. Has to be unique across all patients in a single request.
      *
      * @return the id value.
      */
@@ -66,8 +63,7 @@ public String getId() {
     }
 
     /**
-     * Get the info property: Patient structured information, including demographics and known structured clinical
-     * information.
+     * Get the info property: Patient structured information, including demographics and known structured clinical information.
      *
      * @return the info value.
      */
@@ -77,8 +73,7 @@ public PatientDetails getInfo() {
     }
 
     /**
-     * Set the info property: Patient structured information, including demographics and known structured clinical
-     * information.
+     * Set the info property: Patient structured information, including demographics and known structured clinical information.
      *
      * @param info the info value to set.
      * @return the PatientRecord object itself.
@@ -132,4 +127,57 @@ public PatientRecord setPatientDocuments(List patientDocuments)
         this.patientDocuments = patientDocuments;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeJsonField("info", this.info);
+        jsonWriter.writeArrayField("encounters", this.encounters, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("patientDocuments", this.patientDocuments,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of PatientRecord from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of PatientRecord if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the PatientRecord.
+     */
+    @Generated
+    public static PatientRecord fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            PatientDetails info = null;
+            List encounters = null;
+            List patientDocuments = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("info".equals(fieldName)) {
+                    info = PatientDetails.fromJson(reader);
+                } else if ("encounters".equals(fieldName)) {
+                    encounters = reader.readArray(reader1 -> Encounter.fromJson(reader1));
+                } else if ("patientDocuments".equals(fieldName)) {
+                    patientDocuments = reader.readArray(reader1 -> PatientDocument.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            PatientRecord deserializedPatientRecord = new PatientRecord(id);
+            deserializedPatientRecord.info = info;
+            deserializedPatientRecord.encounters = encounters;
+            deserializedPatientRecord.patientDocuments = patientDocuments;
+            return deserializedPatientRecord;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/PatientSex.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/PatientSex.java
index 72fcac8c6b44..5456a991c20a 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/PatientSex.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/PatientSex.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -48,7 +47,6 @@ public PatientSex() {
      * @return the corresponding PatientSex.
      */
     @Generated
-    @JsonCreator
     public static PatientSex fromString(String name) {
         return fromString(name, PatientSex.class);
     }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ProcedureRecommendation.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ProcedureRecommendation.java
index 9d484aa03f6b..63e2b826e6d9 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ProcedureRecommendation.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ProcedureRecommendation.java
@@ -5,29 +5,115 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The procedure recommendation can be a generic procedure or an imaging procedure.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "kind",
-    defaultImpl = ProcedureRecommendation.class)
-@JsonTypeName("ProcedureRecommendation")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "genericProcedureRecommendation", value = GenericProcedureRecommendation.class),
-    @JsonSubTypes.Type(name = "imagingProcedureRecommendation", value = ImagingProcedureRecommendation.class) })
 @Immutable
-public class ProcedureRecommendation {
+public class ProcedureRecommendation implements JsonSerializable {
 
     /**
      * Creates an instance of ProcedureRecommendation class.
      */
     @Generated
     protected ProcedureRecommendation() {
+        this.kind = "ProcedureRecommendation";
+    }
+
+    /*
+     * Procedure type : generic.
+     */
+    @Generated
+    private String kind;
+
+    /**
+     * Get the kind property: Procedure type : generic.
+     *
+     * @return the kind value.
+     */
+    @Generated
+    public String getKind() {
+        return this.kind;
+    }
+
+    /**
+     * Set the kind property: Procedure type : generic.
+     *
+     * @param kind the kind value to set.
+     * @return the ProcedureRecommendation object itself.
+     */
+    @Generated
+    ProcedureRecommendation setKind(String kind) {
+        this.kind = kind;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", this.kind);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ProcedureRecommendation from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ProcedureRecommendation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ProcedureRecommendation.
+     */
+    @Generated
+    public static ProcedureRecommendation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("kind".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("genericProcedureRecommendation".equals(discriminatorValue)) {
+                    return GenericProcedureRecommendation.fromJson(readerToUse.reset());
+                } else if ("imagingProcedureRecommendation".equals(discriminatorValue)) {
+                    return ImagingProcedureRecommendation.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static ProcedureRecommendation fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ProcedureRecommendation deserializedProcedureRecommendation = new ProcedureRecommendation();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    deserializedProcedureRecommendation.kind = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedProcedureRecommendation;
+        });
     }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyCodeWithTypes.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyCodeWithTypes.java
index ed0bf6e9977b..57970fd737a3 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyCodeWithTypes.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyCodeWithTypes.java
@@ -5,31 +5,30 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Radiology code with types : used in imaging procedure recommendation for contrast and view.
  */
 @Immutable
-public final class RadiologyCodeWithTypes {
+public final class RadiologyCodeWithTypes implements JsonSerializable {
 
     /*
-     * The SNOMED CT code indicates whether imaging was conducted with or without contrast in the case of contrast, and
-     * in the case of views, it denotes the number of views.
+     * The SNOMED CT code indicates whether imaging was conducted with or without contrast in the case of contrast, and in the case of views, it denotes the number of views.
      */
     @Generated
-    @JsonProperty(value = "code")
-    private FhirR4CodeableConcept code;
+    private final FhirR4CodeableConcept code;
 
     /*
-     * The collection of types will indicate the contrast substance used in the case of contrast and, in the case of
-     * views, it will specify the types of views, such as lateral and frontal, etc.
+     * The collection of types will indicate the contrast substance used in the case of contrast and, in the case of views, it will specify the types of views, such as lateral and frontal, etc.
      */
     @Generated
-    @JsonProperty(value = "types")
-    private List types;
+    private final List types;
 
     /**
      * Creates an instance of RadiologyCodeWithTypes class.
@@ -38,16 +37,13 @@ public final class RadiologyCodeWithTypes {
      * @param types the types value to set.
      */
     @Generated
-    @JsonCreator
-    private RadiologyCodeWithTypes(@JsonProperty(value = "code") FhirR4CodeableConcept code,
-        @JsonProperty(value = "types") List types) {
+    private RadiologyCodeWithTypes(FhirR4CodeableConcept code, List types) {
         this.code = code;
         this.types = types;
     }
 
     /**
-     * Get the code property: The SNOMED CT code indicates whether imaging was conducted with or without contrast in
-     * the case of contrast, and in the case of views, it denotes the number of views.
+     * Get the code property: The SNOMED CT code indicates whether imaging was conducted with or without contrast in the case of contrast, and in the case of views, it denotes the number of views.
      *
      * @return the code value.
      */
@@ -57,8 +53,7 @@ public FhirR4CodeableConcept getCode() {
     }
 
     /**
-     * Get the types property: The collection of types will indicate the contrast substance used in the case of
-     * contrast and, in the case of views, it will specify the types of views, such as lateral and frontal, etc.
+     * Get the types property: The collection of types will indicate the contrast substance used in the case of contrast and, in the case of views, it will specify the types of views, such as lateral and frontal, etc.
      *
      * @return the types value.
      */
@@ -66,4 +61,44 @@ public FhirR4CodeableConcept getCode() {
     public List getTypes() {
         return this.types;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeJsonField("code", this.code);
+        jsonWriter.writeArrayField("types", this.types, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RadiologyCodeWithTypes from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RadiologyCodeWithTypes if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RadiologyCodeWithTypes.
+     */
+    @Generated
+    public static RadiologyCodeWithTypes fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            FhirR4CodeableConcept code = null;
+            List types = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("code".equals(fieldName)) {
+                    code = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("types".equals(fieldName)) {
+                    types = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new RadiologyCodeWithTypes(code, types);
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsData.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsData.java
index b2392a9a275d..fdb738b7b0c6 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsData.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsData.java
@@ -5,28 +5,29 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Contains the list of patients, and configuration data.
  */
 @Fluent
-public final class RadiologyInsightsData {
+public final class RadiologyInsightsData implements JsonSerializable {
 
     /*
      * The list of patients, including their clinical information and data.
      */
     @Generated
-    @JsonProperty(value = "patients")
-    private List patients;
+    private final List patients;
 
     /*
      * Configuration affecting the Radiology Insights model's inference.
      */
     @Generated
-    @JsonProperty(value = "configuration")
     private RadiologyInsightsModelConfiguration configuration;
 
     /**
@@ -35,8 +36,7 @@ public final class RadiologyInsightsData {
      * @param patients the patients value to set.
      */
     @Generated
-    @JsonCreator
-    public RadiologyInsightsData(@JsonProperty(value = "patients") List patients) {
+    public RadiologyInsightsData(List patients) {
         this.patients = patients;
     }
 
@@ -71,4 +71,46 @@ public RadiologyInsightsData setConfiguration(RadiologyInsightsModelConfiguratio
         this.configuration = configuration;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("patients", this.patients, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("configuration", this.configuration);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RadiologyInsightsData from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RadiologyInsightsData if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RadiologyInsightsData.
+     */
+    @Generated
+    public static RadiologyInsightsData fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List patients = null;
+            RadiologyInsightsModelConfiguration configuration = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("patients".equals(fieldName)) {
+                    patients = reader.readArray(reader1 -> PatientRecord.fromJson(reader1));
+                } else if ("configuration".equals(fieldName)) {
+                    configuration = RadiologyInsightsModelConfiguration.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            RadiologyInsightsData deserializedRadiologyInsightsData = new RadiologyInsightsData(patients);
+            deserializedRadiologyInsightsData.configuration = configuration;
+            return deserializedRadiologyInsightsData;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsInferenceOptions.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsInferenceOptions.java
index d65ad9828f01..b2bd9b73826e 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsInferenceOptions.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsInferenceOptions.java
@@ -5,26 +5,28 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Options regarding follow up recommendation inferences and finding inferences.
  */
 @Fluent
-public final class RadiologyInsightsInferenceOptions {
+public final class RadiologyInsightsInferenceOptions implements JsonSerializable {
 
     /*
      * Follow-up recommendation options.
      */
     @Generated
-    @JsonProperty(value = "followupRecommendationOptions")
     private FollowupRecommendationOptions followupRecommendationOptions;
 
     /*
      * Finding options.
      */
     @Generated
-    @JsonProperty(value = "findingOptions")
     private FindingOptions findingOptions;
 
     /**
@@ -78,4 +80,44 @@ public RadiologyInsightsInferenceOptions setFindingOptions(FindingOptions findin
         this.findingOptions = findingOptions;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeJsonField("followupRecommendationOptions", this.followupRecommendationOptions);
+        jsonWriter.writeJsonField("findingOptions", this.findingOptions);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RadiologyInsightsInferenceOptions from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RadiologyInsightsInferenceOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the RadiologyInsightsInferenceOptions.
+     */
+    @Generated
+    public static RadiologyInsightsInferenceOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RadiologyInsightsInferenceOptions deserializedRadiologyInsightsInferenceOptions
+                = new RadiologyInsightsInferenceOptions();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("followupRecommendationOptions".equals(fieldName)) {
+                    deserializedRadiologyInsightsInferenceOptions.followupRecommendationOptions
+                        = FollowupRecommendationOptions.fromJson(reader);
+                } else if ("findingOptions".equals(fieldName)) {
+                    deserializedRadiologyInsightsInferenceOptions.findingOptions = FindingOptions.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedRadiologyInsightsInferenceOptions;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsInferenceResult.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsInferenceResult.java
index 214a0bc01e2b..7991472e317b 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsInferenceResult.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsInferenceResult.java
@@ -5,30 +5,30 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
- * The inference results for the Radiology Insights request. If field 'status' has value 'succeeded', then field
- * 'result' will contain an instance of RadiologyInsightsInferenceResult.
+ * The inference results for the Radiology Insights request. If field 'status' has value 'succeeded', then field 'result' will contain an instance of RadiologyInsightsInferenceResult.
  */
 @Immutable
-public final class RadiologyInsightsInferenceResult {
+public final class RadiologyInsightsInferenceResult implements JsonSerializable {
 
     /*
      * Results for the patients given in the request.
      */
     @Generated
-    @JsonProperty(value = "patientResults")
-    private List patientResults;
+    private final List patientResults;
 
     /*
      * The version of the model used for inference, expressed as the model date.
      */
     @Generated
-    @JsonProperty(value = "modelVersion")
-    private String modelVersion;
+    private final String modelVersion;
 
     /**
      * Creates an instance of RadiologyInsightsInferenceResult class.
@@ -37,10 +37,7 @@ public final class RadiologyInsightsInferenceResult {
      * @param modelVersion the modelVersion value to set.
      */
     @Generated
-    @JsonCreator
-    private RadiologyInsightsInferenceResult(
-        @JsonProperty(value = "patientResults") List patientResults,
-        @JsonProperty(value = "modelVersion") String modelVersion) {
+    private RadiologyInsightsInferenceResult(List patientResults, String modelVersion) {
         this.patientResults = patientResults;
         this.modelVersion = modelVersion;
     }
@@ -64,4 +61,45 @@ public List getPatientResults() {
     public String getModelVersion() {
         return this.modelVersion;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("patientResults", this.patientResults,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("modelVersion", this.modelVersion);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RadiologyInsightsInferenceResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RadiologyInsightsInferenceResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RadiologyInsightsInferenceResult.
+     */
+    @Generated
+    public static RadiologyInsightsInferenceResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List patientResults = null;
+            String modelVersion = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("patientResults".equals(fieldName)) {
+                    patientResults = reader.readArray(reader1 -> RadiologyInsightsPatientResult.fromJson(reader1));
+                } else if ("modelVersion".equals(fieldName)) {
+                    modelVersion = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new RadiologyInsightsInferenceResult(patientResults, modelVersion);
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsInferenceType.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsInferenceType.java
index 8e5dbd6f0c52..65821efc8e3f 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsInferenceType.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsInferenceType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -92,7 +91,6 @@ public RadiologyInsightsInferenceType() {
      * @return the corresponding RadiologyInsightsInferenceType.
      */
     @Generated
-    @JsonCreator
     public static RadiologyInsightsInferenceType fromString(String name) {
         return fromString(name, RadiologyInsightsInferenceType.class);
     }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsModelConfiguration.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsModelConfiguration.java
index f5cb2c100127..aa083ec3cf06 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsModelConfiguration.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsModelConfiguration.java
@@ -5,50 +5,48 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Configuration affecting the Radiology Insights model's inference.
  */
 @Fluent
-public final class RadiologyInsightsModelConfiguration {
+public final class RadiologyInsightsModelConfiguration
+    implements JsonSerializable {
 
     /*
      * An indication whether the model should produce verbose output.
      */
     @Generated
-    @JsonProperty(value = "verbose")
     private Boolean verbose;
 
     /*
      * An indication whether the model's output should include evidence for the inferences.
      */
     @Generated
-    @JsonProperty(value = "includeEvidence")
     private Boolean includeEvidence;
 
     /*
-     * This is a list of inference types to be inferred for the current request. It could be used if only part of the
-     * Radiology Insights inferences are required. If this list is omitted or empty, the model will return all the
-     * inference types.
+     * This is a list of inference types to be inferred for the current request. It could be used if only part of the Radiology Insights inferences are required. If this list is omitted or empty, the model will return all the inference types.
      */
     @Generated
-    @JsonProperty(value = "inferenceTypes")
     private List inferenceTypes;
 
     /*
      * Options regarding follow up recommendation inferences and finding inferences.
      */
     @Generated
-    @JsonProperty(value = "inferenceOptions")
     private RadiologyInsightsInferenceOptions inferenceOptions;
 
     /*
      * Local for the model to use. If not specified, the model will use the default locale.
      */
     @Generated
-    @JsonProperty(value = "locale")
     private String locale;
 
     /**
@@ -81,8 +79,7 @@ public RadiologyInsightsModelConfiguration setVerbose(Boolean verbose) {
     }
 
     /**
-     * Get the includeEvidence property: An indication whether the model's output should include evidence for the
-     * inferences.
+     * Get the includeEvidence property: An indication whether the model's output should include evidence for the inferences.
      *
      * @return the includeEvidence value.
      */
@@ -92,8 +89,7 @@ public Boolean isIncludeEvidence() {
     }
 
     /**
-     * Set the includeEvidence property: An indication whether the model's output should include evidence for the
-     * inferences.
+     * Set the includeEvidence property: An indication whether the model's output should include evidence for the inferences.
      *
      * @param includeEvidence the includeEvidence value to set.
      * @return the RadiologyInsightsModelConfiguration object itself.
@@ -105,9 +101,7 @@ public RadiologyInsightsModelConfiguration setIncludeEvidence(Boolean includeEvi
     }
 
     /**
-     * Get the inferenceTypes property: This is a list of inference types to be inferred for the current request. It
-     * could be used if only part of the Radiology Insights inferences are required. If this list is omitted or empty,
-     * the model will return all the inference types.
+     * Get the inferenceTypes property: This is a list of inference types to be inferred for the current request. It could be used if only part of the Radiology Insights inferences are required. If this list is omitted or empty, the model will return all the inference types.
      *
      * @return the inferenceTypes value.
      */
@@ -117,9 +111,7 @@ public List getInferenceTypes() {
     }
 
     /**
-     * Set the inferenceTypes property: This is a list of inference types to be inferred for the current request. It
-     * could be used if only part of the Radiology Insights inferences are required. If this list is omitted or empty,
-     * the model will return all the inference types.
+     * Set the inferenceTypes property: This is a list of inference types to be inferred for the current request. It could be used if only part of the Radiology Insights inferences are required. If this list is omitted or empty, the model will return all the inference types.
      *
      * @param inferenceTypes the inferenceTypes value to set.
      * @return the RadiologyInsightsModelConfiguration object itself.
@@ -173,4 +165,58 @@ public RadiologyInsightsModelConfiguration setLocale(String locale) {
         this.locale = locale;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeBooleanField("verbose", this.verbose);
+        jsonWriter.writeBooleanField("includeEvidence", this.includeEvidence);
+        jsonWriter.writeArrayField("inferenceTypes", this.inferenceTypes,
+            (writer, element) -> writer.writeString(element == null ? null : element.toString()));
+        jsonWriter.writeJsonField("inferenceOptions", this.inferenceOptions);
+        jsonWriter.writeStringField("locale", this.locale);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RadiologyInsightsModelConfiguration from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RadiologyInsightsModelConfiguration if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the RadiologyInsightsModelConfiguration.
+     */
+    @Generated
+    public static RadiologyInsightsModelConfiguration fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RadiologyInsightsModelConfiguration deserializedRadiologyInsightsModelConfiguration
+                = new RadiologyInsightsModelConfiguration();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("verbose".equals(fieldName)) {
+                    deserializedRadiologyInsightsModelConfiguration.verbose
+                        = reader.getNullable(JsonReader::getBoolean);
+                } else if ("includeEvidence".equals(fieldName)) {
+                    deserializedRadiologyInsightsModelConfiguration.includeEvidence
+                        = reader.getNullable(JsonReader::getBoolean);
+                } else if ("inferenceTypes".equals(fieldName)) {
+                    List inferenceTypes
+                        = reader.readArray(reader1 -> RadiologyInsightsInferenceType.fromString(reader1.getString()));
+                    deserializedRadiologyInsightsModelConfiguration.inferenceTypes = inferenceTypes;
+                } else if ("inferenceOptions".equals(fieldName)) {
+                    deserializedRadiologyInsightsModelConfiguration.inferenceOptions
+                        = RadiologyInsightsInferenceOptions.fromJson(reader);
+                } else if ("locale".equals(fieldName)) {
+                    deserializedRadiologyInsightsModelConfiguration.locale = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedRadiologyInsightsModelConfiguration;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsPatientResult.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsPatientResult.java
index 65e58a5f120e..09c45f577add 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsPatientResult.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyInsightsPatientResult.java
@@ -5,29 +5,30 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Results of the model's work for a single patient.
  */
 @Immutable
-public final class RadiologyInsightsPatientResult {
+public final class RadiologyInsightsPatientResult implements JsonSerializable {
 
     /*
      * Identifier given for the patient in the request.
      */
     @Generated
-    @JsonProperty(value = "patientId")
-    private String patientId;
+    private final String patientId;
 
     /*
      * The model's inferences for the given patient.
      */
     @Generated
-    @JsonProperty(value = "inferences")
-    private List inferences;
+    private final List inferences;
 
     /**
      * Creates an instance of RadiologyInsightsPatientResult class.
@@ -36,9 +37,7 @@ public final class RadiologyInsightsPatientResult {
      * @param inferences the inferences value to set.
      */
     @Generated
-    @JsonCreator
-    private RadiologyInsightsPatientResult(@JsonProperty(value = "patientId") String patientId,
-        @JsonProperty(value = "inferences") List inferences) {
+    private RadiologyInsightsPatientResult(String patientId, List inferences) {
         this.patientId = patientId;
         this.inferences = inferences;
     }
@@ -62,4 +61,44 @@ public String getPatientId() {
     public List getInferences() {
         return this.inferences;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("patientId", this.patientId);
+        jsonWriter.writeArrayField("inferences", this.inferences, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RadiologyInsightsPatientResult from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RadiologyInsightsPatientResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RadiologyInsightsPatientResult.
+     */
+    @Generated
+    public static RadiologyInsightsPatientResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String patientId = null;
+            List inferences = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("patientId".equals(fieldName)) {
+                    patientId = reader.getString();
+                } else if ("inferences".equals(fieldName)) {
+                    inferences = reader.readArray(reader1 -> FhirR4Extendible1.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new RadiologyInsightsPatientResult(patientId, inferences);
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyProcedureInference.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyProcedureInference.java
index b67ff74c7de6..2b393cacd012 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyProcedureInference.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RadiologyProcedureInference.java
@@ -5,18 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
- * Radiology procedures are the specific imaging studies or examinations ordered for the patient, extracted from the
- * document information and text.
+ * Radiology procedures are the specific imaging studies or examinations ordered for the patient, extracted from the document information and text.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
-@JsonTypeName("radiologyProcedure")
 @Immutable
 public final class RadiologyProcedureInference extends FhirR4Extendible1 {
 
@@ -24,22 +21,19 @@ public final class RadiologyProcedureInference extends FhirR4Extendible1 {
      * LOINC codes for the procedure.
      */
     @Generated
-    @JsonProperty(value = "procedureCodes")
     private List procedureCodes;
 
     /*
      * Imaging procedures.
      */
     @Generated
-    @JsonProperty(value = "imagingProcedures")
-    private List imagingProcedures;
+    private final List imagingProcedures;
 
     /*
      * Ordered procedure information from the document information or text.
      */
     @Generated
-    @JsonProperty(value = "orderedProcedure")
-    private FhirR4Extendible orderedProcedure;
+    private final FhirR4Extendible orderedProcedure;
 
     /**
      * Creates an instance of RadiologyProcedureInference class.
@@ -48,10 +42,8 @@ public final class RadiologyProcedureInference extends FhirR4Extendible1 {
      * @param orderedProcedure the orderedProcedure value to set.
      */
     @Generated
-    @JsonCreator
-    private RadiologyProcedureInference(
-        @JsonProperty(value = "imagingProcedures") List imagingProcedures,
-        @JsonProperty(value = "orderedProcedure") FhirR4Extendible orderedProcedure) {
+    private RadiologyProcedureInference(List imagingProcedures, FhirR4Extendible orderedProcedure) {
+        setKind(RadiologyInsightsInferenceType.RADIOLOGY_PROCEDURE);
         this.imagingProcedures = imagingProcedures;
         this.orderedProcedure = orderedProcedure;
     }
@@ -85,4 +77,63 @@ public List getImagingProcedures() {
     public FhirR4Extendible getOrderedProcedure() {
         return this.orderedProcedure;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString());
+        jsonWriter.writeArrayField("extension", getExtension(), (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("imagingProcedures", this.imagingProcedures,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("orderedProcedure", this.orderedProcedure);
+        jsonWriter.writeArrayField("procedureCodes", this.procedureCodes,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RadiologyProcedureInference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RadiologyProcedureInference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RadiologyProcedureInference.
+     */
+    @Generated
+    public static RadiologyProcedureInference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RadiologyInsightsInferenceType kind = RadiologyInsightsInferenceType.RADIOLOGY_PROCEDURE;
+            List extension = null;
+            List imagingProcedures = null;
+            FhirR4Extendible orderedProcedure = null;
+            List procedureCodes = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = RadiologyInsightsInferenceType.fromString(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("imagingProcedures".equals(fieldName)) {
+                    imagingProcedures = reader.readArray(reader1 -> ImagingProcedure.fromJson(reader1));
+                } else if ("orderedProcedure".equals(fieldName)) {
+                    orderedProcedure = FhirR4Extendible.fromJson(reader);
+                } else if ("procedureCodes".equals(fieldName)) {
+                    procedureCodes = reader.readArray(reader1 -> FhirR4CodeableConcept.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            RadiologyProcedureInference deserializedRadiologyProcedureInference
+                = new RadiologyProcedureInference(imagingProcedures, orderedProcedure);
+            deserializedRadiologyProcedureInference.setKind(kind);
+            deserializedRadiologyProcedureInference.setExtension(extension);
+            deserializedRadiologyProcedureInference.procedureCodes = procedureCodes;
+            return deserializedRadiologyProcedureInference;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RecommendationFindingStatusType.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RecommendationFindingStatusType.java
index dfdff0c5955e..1ec7c9e58f38 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RecommendationFindingStatusType.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/RecommendationFindingStatusType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -54,7 +53,6 @@ public RecommendationFindingStatusType() {
      * @return the corresponding RecommendationFindingStatusType.
      */
     @Generated
-    @JsonCreator
     public static RecommendationFindingStatusType fromString(String name) {
         return fromString(name, RecommendationFindingStatusType.class);
     }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ResearchStudyArm.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ResearchStudyArm.java
index 6cee2c296802..47d4f8ab8e26 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ResearchStudyArm.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ResearchStudyArm.java
@@ -5,34 +5,34 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The ResearchStudyArm model.
  */
 @Fluent
-public final class ResearchStudyArm {
+public final class ResearchStudyArm implements JsonSerializable {
 
     /*
      * Label for study arm
      */
     @Generated
-    @JsonProperty(value = "name")
-    private String name;
+    private final String name;
 
     /*
      * Categorization of study arm
      */
     @Generated
-    @JsonProperty(value = "type")
     private FhirR4CodeableConcept type;
 
     /*
      * Short explanation of study path
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /**
@@ -41,8 +41,7 @@ public final class ResearchStudyArm {
      * @param name the name value to set.
      */
     @Generated
-    @JsonCreator
-    public ResearchStudyArm(@JsonProperty(value = "name") String name) {
+    public ResearchStudyArm(String name) {
         this.name = name;
     }
 
@@ -99,4 +98,51 @@ public ResearchStudyArm setDescription(String description) {
         this.description = description;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeJsonField("type", this.type);
+        jsonWriter.writeStringField("description", this.description);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ResearchStudyArm from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ResearchStudyArm if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ResearchStudyArm.
+     */
+    @Generated
+    public static ResearchStudyArm fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String name = null;
+            FhirR4CodeableConcept type = null;
+            String description = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    type = FhirR4CodeableConcept.fromJson(reader);
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            ResearchStudyArm deserializedResearchStudyArm = new ResearchStudyArm(name);
+            deserializedResearchStudyArm.type = type;
+            deserializedResearchStudyArm.description = description;
+            return deserializedResearchStudyArm;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ResearchStudyObjective.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ResearchStudyObjective.java
index a03a2629dc73..e7a71f619551 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ResearchStudyObjective.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ResearchStudyObjective.java
@@ -5,27 +5,28 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The ResearchStudyObjective model.
  */
 @Fluent
-public final class ResearchStudyObjective {
+public final class ResearchStudyObjective implements JsonSerializable {
 
     /*
      * Label for the objective
      */
     @Generated
-    @JsonProperty(value = "name")
-    private String name;
+    private final String name;
 
     /*
      * primary | secondary | exploratory
      */
     @Generated
-    @JsonProperty(value = "type")
     private FhirR4CodeableConcept type;
 
     /**
@@ -34,8 +35,7 @@ public final class ResearchStudyObjective {
      * @param name the name value to set.
      */
     @Generated
-    @JsonCreator
-    public ResearchStudyObjective(@JsonProperty(value = "name") String name) {
+    public ResearchStudyObjective(String name) {
         this.name = name;
     }
 
@@ -70,4 +70,46 @@ public ResearchStudyObjective setType(FhirR4CodeableConcept type) {
         this.type = type;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeJsonField("type", this.type);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ResearchStudyObjective from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ResearchStudyObjective if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ResearchStudyObjective.
+     */
+    @Generated
+    public static ResearchStudyObjective fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String name = null;
+            FhirR4CodeableConcept type = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    type = FhirR4CodeableConcept.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            ResearchStudyObjective deserializedResearchStudyObjective = new ResearchStudyObjective(name);
+            deserializedResearchStudyObjective.type = type;
+            return deserializedResearchStudyObjective;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ResearchStudyStatusCodeType.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ResearchStudyStatusCodeType.java
index d6de6f10ffeb..a1ad4e031eb4 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ResearchStudyStatusCodeType.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/ResearchStudyStatusCodeType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -39,16 +38,14 @@ public final class ResearchStudyStatusCodeType extends ExpandableStringEnum writer.writeJson(element));
+        jsonWriter.writeJsonField("sexIndication", this.sexIndication);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SexMismatchInference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SexMismatchInference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the SexMismatchInference.
+     */
+    @Generated
+    public static SexMismatchInference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RadiologyInsightsInferenceType kind = RadiologyInsightsInferenceType.SEX_MISMATCH;
+            List extension = null;
+            FhirR4CodeableConcept sexIndication = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("kind".equals(fieldName)) {
+                    kind = RadiologyInsightsInferenceType.fromString(reader.getString());
+                } else if ("extension".equals(fieldName)) {
+                    extension = reader.readArray(reader1 -> FhirR4Extension.fromJson(reader1));
+                } else if ("sexIndication".equals(fieldName)) {
+                    sexIndication = FhirR4CodeableConcept.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            SexMismatchInference deserializedSexMismatchInference = new SexMismatchInference(sexIndication);
+            deserializedSexMismatchInference.setKind(kind);
+            deserializedSexMismatchInference.setExtension(extension);
+            return deserializedSexMismatchInference;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/SpecialtyType.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/SpecialtyType.java
index b21b46d62c16..30f48b2fe969 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/SpecialtyType.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/SpecialtyType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public SpecialtyType() {
      * @return the corresponding SpecialtyType.
      */
     @Generated
-    @JsonCreator
     public static SpecialtyType fromString(String name) {
         return fromString(name, SpecialtyType.class);
     }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/TimePeriod.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/TimePeriod.java
index d768b1f66300..cc188719f594 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/TimePeriod.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/TimePeriod.java
@@ -5,27 +5,30 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * A duration of time during which an event is happening.
  */
 @Fluent
-public final class TimePeriod {
+public final class TimePeriod implements JsonSerializable {
 
     /*
      * Starting time with inclusive boundary
      */
     @Generated
-    @JsonProperty(value = "start")
     private OffsetDateTime start;
 
     /*
      * End time with inclusive boundary, if not ongoing
      */
     @Generated
-    @JsonProperty(value = "end")
     private OffsetDateTime end;
 
     /**
@@ -78,4 +81,46 @@ public TimePeriod setEnd(OffsetDateTime end) {
         this.end = end;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("start",
+            this.start == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.start));
+        jsonWriter.writeStringField("end",
+            this.end == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.end));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of TimePeriod from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of TimePeriod if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the TimePeriod.
+     */
+    @Generated
+    public static TimePeriod fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            TimePeriod deserializedTimePeriod = new TimePeriod();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("start".equals(fieldName)) {
+                    deserializedTimePeriod.start
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("end".equals(fieldName)) {
+                    deserializedTimePeriod.end
+                        = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedTimePeriod;
+        });
+    }
 }
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/package-info.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/package-info.java
index ca32d09d0b85..6f14e4885ec9 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/package-info.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/models/package-info.java
@@ -4,8 +4,7 @@
 /**
  * 
  * Package containing the data models for RadiologyInsights.
- * Azure AI Health Insights provides an API that serves insight models, specific for Health & Life Sciences, that
- * perform analysis and provide inferences to be used by a human.
+ * Azure AI Health Insights provides an API that serves insight models, specific for Health & Life Sciences, that perform analysis and provide inferences to be used by a human.
  * 
  */
 package com.azure.health.insights.radiologyinsights.models;
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/package-info.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/package-info.java
index 9f2d0fc57192..396f91148eb2 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/package-info.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/com/azure/health/insights/radiologyinsights/package-info.java
@@ -4,8 +4,7 @@
 /**
  * 
  * Package containing the classes for RadiologyInsights.
- * Azure AI Health Insights provides an API that serves insight models, specific for Health & Life Sciences, that
- * perform analysis and provide inferences to be used by a human.
+ * Azure AI Health Insights provides an API that serves insight models, specific for Health & Life Sciences, that perform analysis and provide inferences to be used by a human.
  * 
  */
 package com.azure.health.insights.radiologyinsights;
diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/module-info.java b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/module-info.java
index 37144dcec9cb..3982ed415dbc 100644
--- a/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/module-info.java
+++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/src/main/java/module-info.java
@@ -4,8 +4,9 @@
 
 module com.azure.health.insights.radiologyinsights {
     requires transitive com.azure.core;
+    requires transitive com.azure.json;
     requires transitive com.azure.core.experimental;
     exports com.azure.health.insights.radiologyinsights;
     exports com.azure.health.insights.radiologyinsights.models;
-    opens com.azure.health.insights.radiologyinsights.models to com.azure.core, com.fasterxml.jackson.databind;
+    opens com.azure.health.insights.radiologyinsights.models to com.azure.core;
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/AssistantsAsyncClient.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/AssistantsAsyncClient.java
index 6d837fea7f0b..346b19172c5c 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/AssistantsAsyncClient.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/AssistantsAsyncClient.java
@@ -3,8 +3,6 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.ai.openai.assistants;
 
-import static com.azure.ai.openai.assistants.implementation.OpenAIUtils.addAzureVersionToRequestOptions;
-
 import com.azure.ai.openai.assistants.implementation.AssistantsClientImpl;
 import com.azure.ai.openai.assistants.implementation.MultipartFormDataHelper;
 import com.azure.ai.openai.assistants.implementation.models.CreateAssistantFileRequest;
@@ -31,7 +29,6 @@
 import com.azure.ai.openai.assistants.models.MessageFile;
 import com.azure.ai.openai.assistants.models.MessageRole;
 import com.azure.ai.openai.assistants.models.OpenAIFile;
-import com.azure.ai.openai.assistants.models.PageableList;
 import com.azure.ai.openai.assistants.models.RunStep;
 import com.azure.ai.openai.assistants.models.ThreadDeletionStatus;
 import com.azure.ai.openai.assistants.models.ThreadMessage;
@@ -55,6 +52,8 @@
 import java.util.Map;
 import java.util.Objects;
 import reactor.core.publisher.Mono;
+import static com.azure.ai.openai.assistants.implementation.OpenAIUtils.addAzureVersionToRequestOptions;
+import com.azure.ai.openai.assistants.models.PageableList;
 
 /**
  * Initializes a new instance of the asynchronous AssistantsClient type.
@@ -418,7 +417,8 @@ public Mono createAssistant(AssistantCreationOptions assistantCreatio
         // Generated convenience method for createAssistantWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return createAssistantWithResponse(BinaryData.fromObject(assistantCreationOptions), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(Assistant.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(Assistant.class));
     }
 
     /**
@@ -515,8 +515,7 @@ public Mono deleteAssistant(String assistantId) {
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return information about a file attached to an assistant, as used by tools that can read files on successful
-     * completion of {@link Mono}.
+     * @return information about a file attached to an assistant, as used by tools that can read files on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1836,8 +1835,7 @@ public Mono getAssistant(String assistantId) {
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return information about a file attached to an assistant, as used by tools that can read files on successful
-     * completion of {@link Mono}.
+     * @return information about a file attached to an assistant, as used by tools that can read files on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1866,7 +1864,8 @@ public Mono createThread(AssistantThreadCreationOptions assista
         // Generated convenience method for createThreadWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return createThreadWithResponse(BinaryData.fromObject(assistantThreadCreationOptions), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(AssistantThread.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(AssistantThread.class));
     }
 
     /**
@@ -1917,11 +1916,8 @@ public Mono deleteThread(String threadId) {
      * @param threadId The ID of the thread to create the new message on.
      * @param role The role to associate with the new message.
      * @param content The textual content for the new message.
-     * @param fileIds A list of up to 10 file IDs to associate with the message, as used by tools like
-     * 'code_interpreter' or 'retrieval' that can read files.
-     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional
-     * information about that object in a structured format. Keys may be up to 64 characters in length and values may be
-     * up to 512 characters in length.
+     * @param fileIds A list of up to 10 file IDs to associate with the message, as used by tools like 'code_interpreter' or 'retrieval' that can read files.
+     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws HttpResponseException thrown if the request is rejected by server.
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
@@ -2136,8 +2132,7 @@ public Mono> listMessageFiles(String threadId, String
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return information about a file attachment to a message within a thread on successful completion of
-     * {@link Mono}.
+     * @return information about a file attachment to a message within a thread on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -2236,8 +2231,7 @@ public Mono getRun(String threadId, String runId) {
     }
 
     /**
-     * Submits outputs from tools as requested by tool calls in a run. Runs that need submitted tool outputs will have a
-     * status of 'requires_action' with a required_action.type of 'submit_tool_outputs'.
+     * Submits outputs from tools as requested by tool calls in a run. Runs that need submitted tool outputs will have a status of 'requires_action' with a required_action.type of 'submit_tool_outputs'.
      *
      * @param threadId The ID of the thread that was run.
      * @param runId The ID of the run that requires tool outputs.
@@ -2248,8 +2242,7 @@ public Mono getRun(String threadId, String runId) {
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return data representing a single evaluation run of an assistant thread on successful completion of
-     * {@link Mono}.
+     * @return data representing a single evaluation run of an assistant thread on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -2273,8 +2266,7 @@ public Mono submitToolOutputsToRun(String threadId, String runId, Lis
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return data representing a single evaluation run of an assistant thread on successful completion of
-     * {@link Mono}.
+     * @return data representing a single evaluation run of an assistant thread on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -2295,8 +2287,7 @@ public Mono cancelRun(String threadId, String runId) {
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return data representing a single evaluation run of an assistant thread on successful completion of
-     * {@link Mono}.
+     * @return data representing a single evaluation run of an assistant thread on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -2304,7 +2295,8 @@ public Mono createThreadAndRun(CreateAndRunThreadOptions createAndRun
         // Generated convenience method for createThreadAndRunWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return createThreadAndRunWithResponse(BinaryData.fromObject(createAndRunThreadOptions), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(ThreadRun.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(ThreadRun.class));
     }
 
     /**
@@ -2772,16 +2764,15 @@ public Mono updateAssistant(String assistantId, UpdateAssistantOption
         // Generated convenience method for updateAssistantWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return updateAssistantWithResponse(assistantId, BinaryData.fromObject(updateAssistantOptions), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(Assistant.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(Assistant.class));
     }
 
     /**
      * Modifies an existing thread.
      *
      * @param threadId The ID of the thread to modify.
-     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional
-     * information about that object in a structured format. Keys may be up to 64 characters in length and values may be
-     * up to 512 characters in length.
+     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws HttpResponseException thrown if the request is rejected by server.
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
@@ -2829,9 +2820,7 @@ public Mono updateThread(String threadId) {
      *
      * @param threadId The ID of the thread containing the specified message to modify.
      * @param messageId The ID of the message to modify on the specified thread.
-     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional
-     * information about that object in a structured format. Keys may be up to 64 characters in length and values may be
-     * up to 512 characters in length.
+     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws HttpResponseException thrown if the request is rejected by server.
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
@@ -2886,8 +2875,7 @@ public Mono updateMessage(String threadId, String messageId) {
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return data representing a single evaluation run of an assistant thread on successful completion of
-     * {@link Mono}.
+     * @return data representing a single evaluation run of an assistant thread on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -2895,7 +2883,8 @@ public Mono createRun(String threadId, CreateRunOptions createRunOpti
         // Generated convenience method for createRunWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return createRunWithResponse(threadId, BinaryData.fromObject(createRunOptions), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(ThreadRun.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(ThreadRun.class));
     }
 
     /**
@@ -2922,17 +2911,14 @@ public Mono createRun(AssistantThread thread, Assistant assistant) {
      *
      * @param threadId The ID of the thread associated with the specified run.
      * @param runId The ID of the run to modify.
-     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional
-     * information about that object in a structured format. Keys may be up to 64 characters in length and values may be
-     * up to 512 characters in length.
+     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws HttpResponseException thrown if the request is rejected by server.
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return data representing a single evaluation run of an assistant thread on successful completion of
-     * {@link Mono}.
+     * @return data representing a single evaluation run of an assistant thread on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -2956,8 +2942,7 @@ public Mono updateRun(String threadId, String runId, Map uploadFile(FileDetails file, FilePurpose purpose, String
             .serializeFileField("file", requestObj.getFile().getContent(), requestObj.getFile().getContentType(),
                 requestObj.getFile().getFilename())
             .serializeTextField("purpose", Objects.toString(requestObj.getPurpose()))
-            .serializeTextField("filename", requestObj.getFilename()).end().getRequestBody();
+            .serializeTextField("filename", requestObj.getFilename())
+            .end()
+            .getRequestBody();
         return uploadFileWithResponse(request, requestOptions).flatMap(FluxUtil::toMono)
             .map(protocolMethodData -> protocolMethodData.toObject(OpenAIFile.class));
     }
@@ -3043,7 +3030,9 @@ public Mono uploadFile(FileDetails file, FilePurpose purpose) {
             .serializeFileField("file", requestObj.getFile().getContent(), requestObj.getFile().getContentType(),
                 requestObj.getFile().getFilename())
             .serializeTextField("purpose", Objects.toString(requestObj.getPurpose()))
-            .serializeTextField("filename", requestObj.getFilename()).end().getRequestBody();
+            .serializeTextField("filename", requestObj.getFilename())
+            .end()
+            .getRequestBody();
         return uploadFileWithResponse(request, requestOptions).flatMap(FluxUtil::toMono)
             .map(protocolMethodData -> protocolMethodData.toObject(OpenAIFile.class));
     }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/AssistantsClient.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/AssistantsClient.java
index b8791b9994d5..2147e8733721 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/AssistantsClient.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/AssistantsClient.java
@@ -3,8 +3,6 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.ai.openai.assistants;
 
-import static com.azure.ai.openai.assistants.implementation.OpenAIUtils.addAzureVersionToRequestOptions;
-
 import com.azure.ai.openai.assistants.implementation.AssistantsClientImpl;
 import com.azure.ai.openai.assistants.implementation.MultipartFormDataHelper;
 import com.azure.ai.openai.assistants.implementation.models.CreateAssistantFileRequest;
@@ -31,7 +29,6 @@
 import com.azure.ai.openai.assistants.models.MessageFile;
 import com.azure.ai.openai.assistants.models.MessageRole;
 import com.azure.ai.openai.assistants.models.OpenAIFile;
-import com.azure.ai.openai.assistants.models.PageableList;
 import com.azure.ai.openai.assistants.models.RunStep;
 import com.azure.ai.openai.assistants.models.ThreadDeletionStatus;
 import com.azure.ai.openai.assistants.models.ThreadMessage;
@@ -53,6 +50,8 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import static com.azure.ai.openai.assistants.implementation.OpenAIUtils.addAzureVersionToRequestOptions;
+import com.azure.ai.openai.assistants.models.PageableList;
 
 /**
  * Initializes a new instance of the synchronous AssistantsClient type.
@@ -1834,7 +1833,8 @@ public AssistantThread createThread(AssistantThreadCreationOptions assistantThre
         // Generated convenience method for createThreadWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return createThreadWithResponse(BinaryData.fromObject(assistantThreadCreationOptions), requestOptions)
-            .getValue().toObject(AssistantThread.class);
+            .getValue()
+            .toObject(AssistantThread.class);
     }
 
     /**
@@ -1883,11 +1883,8 @@ public ThreadDeletionStatus deleteThread(String threadId) {
      * @param threadId The ID of the thread to create the new message on.
      * @param role The role to associate with the new message.
      * @param content The textual content for the new message.
-     * @param fileIds A list of up to 10 file IDs to associate with the message, as used by tools like
-     * 'code_interpreter' or 'retrieval' that can read files.
-     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional
-     * information about that object in a structured format. Keys may be up to 64 characters in length and values may be
-     * up to 512 characters in length.
+     * @param fileIds A list of up to 10 file IDs to associate with the message, as used by tools like 'code_interpreter' or 'retrieval' that can read files.
+     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws HttpResponseException thrown if the request is rejected by server.
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
@@ -2195,8 +2192,7 @@ public ThreadRun getRun(String threadId, String runId) {
     }
 
     /**
-     * Submits outputs from tools as requested by tool calls in a run. Runs that need submitted tool outputs will have a
-     * status of 'requires_action' with a required_action.type of 'submit_tool_outputs'.
+     * Submits outputs from tools as requested by tool calls in a run. Runs that need submitted tool outputs will have a status of 'requires_action' with a required_action.type of 'submit_tool_outputs'.
      *
      * @param threadId The ID of the thread that was run.
      * @param runId The ID of the run that requires tool outputs.
@@ -2259,7 +2255,8 @@ public ThreadRun createThreadAndRun(CreateAndRunThreadOptions createAndRunThread
         // Generated convenience method for createThreadAndRunWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return createThreadAndRunWithResponse(BinaryData.fromObject(createAndRunThreadOptions), requestOptions)
-            .getValue().toObject(ThreadRun.class);
+            .getValue()
+            .toObject(ThreadRun.class);
     }
 
     /**
@@ -2716,16 +2713,15 @@ public Assistant updateAssistant(String assistantId, UpdateAssistantOptions upda
         // Generated convenience method for updateAssistantWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return updateAssistantWithResponse(assistantId, BinaryData.fromObject(updateAssistantOptions), requestOptions)
-            .getValue().toObject(Assistant.class);
+            .getValue()
+            .toObject(Assistant.class);
     }
 
     /**
      * Modifies an existing thread.
      *
      * @param threadId The ID of the thread to modify.
-     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional
-     * information about that object in a structured format. Keys may be up to 64 characters in length and values may be
-     * up to 512 characters in length.
+     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws HttpResponseException thrown if the request is rejected by server.
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
@@ -2771,9 +2767,7 @@ public AssistantThread updateThread(String threadId) {
      *
      * @param threadId The ID of the thread containing the specified message to modify.
      * @param messageId The ID of the message to modify on the specified thread.
-     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional
-     * information about that object in a structured format. Keys may be up to 64 characters in length and values may be
-     * up to 512 characters in length.
+     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws HttpResponseException thrown if the request is rejected by server.
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
@@ -2864,9 +2858,7 @@ public ThreadRun createRun(AssistantThread thread, Assistant assistant) {
      *
      * @param threadId The ID of the thread associated with the specified run.
      * @param runId The ID of the run to modify.
-     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional
-     * information about that object in a structured format. Keys may be up to 64 characters in length and values may be
-     * up to 512 characters in length.
+     * @param metadata A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws HttpResponseException thrown if the request is rejected by server.
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
@@ -2952,7 +2944,9 @@ public OpenAIFile uploadFile(FileDetails file, FilePurpose purpose, String filen
             .serializeFileField("file", requestObj.getFile().getContent(), requestObj.getFile().getContentType(),
                 requestObj.getFile().getFilename())
             .serializeTextField("purpose", Objects.toString(requestObj.getPurpose()))
-            .serializeTextField("filename", requestObj.getFilename()).end().getRequestBody();
+            .serializeTextField("filename", requestObj.getFilename())
+            .end()
+            .getRequestBody();
         return uploadFileWithResponse(request, requestOptions).getValue().toObject(OpenAIFile.class);
     }
 
@@ -2979,7 +2973,9 @@ public OpenAIFile uploadFile(FileDetails file, FilePurpose purpose) {
             .serializeFileField("file", requestObj.getFile().getContent(), requestObj.getFile().getContentType(),
                 requestObj.getFile().getFilename())
             .serializeTextField("purpose", Objects.toString(requestObj.getPurpose()))
-            .serializeTextField("filename", requestObj.getFilename()).end().getRequestBody();
+            .serializeTextField("filename", requestObj.getFilename())
+            .end()
+            .getRequestBody();
         return uploadFileWithResponse(request, requestOptions).getValue().toObject(OpenAIFile.class);
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/AssistantsClientBuilder.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/AssistantsClientBuilder.java
index 288053f0f293..5d61e3fa9cf4 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/AssistantsClientBuilder.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/AssistantsClientBuilder.java
@@ -3,10 +3,7 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.ai.openai.assistants;
 
-import static com.azure.ai.openai.assistants.implementation.OpenAIUtils.useAzureOpenAIService;
-
 import com.azure.ai.openai.assistants.implementation.AssistantsClientImpl;
-import com.azure.ai.openai.assistants.implementation.OpenAIUtils;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.ServiceClientBuilder;
 import com.azure.core.client.traits.ConfigurationTrait;
@@ -26,8 +23,8 @@
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
 import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.KeyCredentialPolicy;
@@ -45,6 +42,8 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import static com.azure.ai.openai.assistants.implementation.OpenAIUtils.useAzureOpenAIService;
+import com.azure.ai.openai.assistants.implementation.OpenAIUtils;
 
 /**
  * A builder for creating a new instance of the AssistantsClient type.
@@ -275,24 +274,29 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
         policies.add(new AddDatePolicy());
         if (keyCredential != null) {
-            policies.add(useAzureOpenAIService(this.endpoint) ? new KeyCredentialPolicy("api-key", keyCredential)
+            policies.add(useAzureOpenAIService(this.endpoint)
+                ? new KeyCredentialPolicy("api-key", keyCredential)
                 : new KeyCredentialPolicy("Authorization", keyCredential, "Bearer"));
         }
         if (tokenCredential != null) {
             policies.add(new BearerTokenAuthenticationPolicy(tokenCredential, DEFAULT_SCOPES));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/AssistantsClientImpl.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/AssistantsClientImpl.java
index 0f4121e33fcd..4d292ef4065f 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/AssistantsClientImpl.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/AssistantsClientImpl.java
@@ -141,8 +141,7 @@ public AssistantsClientImpl(HttpPipeline httpPipeline, SerializerAdapter seriali
     }
 
     /**
-     * The interface defining all the services for AssistantsClient to be used by the proxy service to perform REST
-     * calls.
+     * The interface defining all the services for AssistantsClient to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}")
     @ServiceInterface(name = "AssistantsClient")
@@ -799,9 +798,7 @@ Response getFileSync(@HostParam("endpoint") String endpoint, @PathPa
 
     /**
      * Creates a new assistant.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     model: String (Required)
@@ -810,6 +807,7 @@ Response getFileSync(@HostParam("endpoint") String endpoint, @PathPa
      *     instructions: String (Optional)
      *     tools (Optional): [
      *          (Optional){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Optional): [
@@ -820,9 +818,7 @@ Response getFileSync(@HostParam("endpoint") String endpoint, @PathPa
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -834,6 +830,7 @@ Response getFileSync(@HostParam("endpoint") String endpoint, @PathPa
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -851,8 +848,7 @@ Response getFileSync(@HostParam("endpoint") String endpoint, @PathPa
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return represents an assistant that can call the model and use tools along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return represents an assistant that can call the model and use tools along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> createAssistantWithResponseAsync(BinaryData assistantCreationOptions,
@@ -864,9 +860,7 @@ public Mono> createAssistantWithResponseAsync(BinaryData as
 
     /**
      * Creates a new assistant.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     model: String (Required)
@@ -875,6 +869,7 @@ public Mono> createAssistantWithResponseAsync(BinaryData as
      *     instructions: String (Optional)
      *     tools (Optional): [
      *          (Optional){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Optional): [
@@ -885,9 +880,7 @@ public Mono> createAssistantWithResponseAsync(BinaryData as
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -899,6 +892,7 @@ public Mono> createAssistantWithResponseAsync(BinaryData as
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -928,52 +922,17 @@ public Response createAssistantWithResponse(BinaryData assistantCrea
 
     /**
      * Gets a list of assistants that were previously created.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is - * 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. - * Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * before=obj_foo in order to fetch the previous page of the list.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -988,6 +947,7 @@ public Response createAssistantWithResponse(BinaryData assistantCrea
      *             instructions: String (Required)
      *             tools (Required): [
      *                  (Required){
+     *                     type: String (Optional)
      *                 }
      *             ]
      *             file_ids (Required): [
@@ -1009,8 +969,7 @@ public Response createAssistantWithResponse(BinaryData assistantCrea
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a list of assistants that were previously created along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a list of assistants that were previously created along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> listAssistantsWithResponseAsync(RequestOptions requestOptions) {
@@ -1021,52 +980,17 @@ public Mono> listAssistantsWithResponseAsync(RequestOptions
 
     /**
      * Gets a list of assistants that were previously created.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is - * 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. - * Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * before=obj_foo in order to fetch the previous page of the list.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -1081,6 +1005,7 @@ public Mono> listAssistantsWithResponseAsync(RequestOptions
      *             instructions: String (Required)
      *             tools (Required): [
      *                  (Required){
+     *                     type: String (Optional)
      *                 }
      *             ]
      *             file_ids (Required): [
@@ -1112,9 +1037,7 @@ public Response listAssistantsWithResponse(RequestOptions requestOpt
 
     /**
      * Retrieves an existing assistant.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1126,6 +1049,7 @@ public Response listAssistantsWithResponse(RequestOptions requestOpt
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -1143,8 +1067,7 @@ public Response listAssistantsWithResponse(RequestOptions requestOpt
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return represents an assistant that can call the model and use tools along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return represents an assistant that can call the model and use tools along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getAssistantWithResponseAsync(String assistantId, RequestOptions requestOptions) {
@@ -1155,9 +1078,7 @@ public Mono> getAssistantWithResponseAsync(String assistant
 
     /**
      * Retrieves an existing assistant.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1169,6 +1090,7 @@ public Mono> getAssistantWithResponseAsync(String assistant
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -1196,9 +1118,7 @@ public Response getAssistantWithResponse(String assistantId, Request
 
     /**
      * Modifies an existing assistant.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     model: String (Optional)
@@ -1207,6 +1127,7 @@ public Response getAssistantWithResponse(String assistantId, Request
      *     instructions: String (Optional)
      *     tools (Optional): [
      *          (Optional){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Optional): [
@@ -1217,9 +1138,7 @@ public Response getAssistantWithResponse(String assistantId, Request
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1231,6 +1150,7 @@ public Response getAssistantWithResponse(String assistantId, Request
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -1249,8 +1169,7 @@ public Response getAssistantWithResponse(String assistantId, Request
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return represents an assistant that can call the model and use tools along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return represents an assistant that can call the model and use tools along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> updateAssistantWithResponseAsync(String assistantId,
@@ -1262,9 +1181,7 @@ public Mono> updateAssistantWithResponseAsync(String assist
 
     /**
      * Modifies an existing assistant.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     model: String (Optional)
@@ -1273,6 +1190,7 @@ public Mono> updateAssistantWithResponseAsync(String assist
      *     instructions: String (Optional)
      *     tools (Optional): [
      *          (Optional){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Optional): [
@@ -1283,9 +1201,7 @@ public Mono> updateAssistantWithResponseAsync(String assist
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1297,6 +1213,7 @@ public Mono> updateAssistantWithResponseAsync(String assist
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -1327,9 +1244,7 @@ public Response updateAssistantWithResponse(String assistantId, Bina
 
     /**
      * Deletes an assistant.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1344,8 +1259,7 @@ public Response updateAssistantWithResponse(String assistantId, Bina
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the status of an assistant deletion operation along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the status of an assistant deletion operation along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> deleteAssistantWithResponseAsync(String assistantId,
@@ -1357,9 +1271,7 @@ public Mono> deleteAssistantWithResponseAsync(String assist
 
     /**
      * Deletes an assistant.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1384,17 +1296,13 @@ public Response deleteAssistantWithResponse(String assistantId, Requ
 
     /**
      * Attaches a previously uploaded file to an assistant for use by tools that can read files.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     file_id: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1411,8 +1319,7 @@ public Response deleteAssistantWithResponse(String assistantId, Requ
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return information about a file attached to an assistant, as used by tools that can read files along with
-     * {@link Response} on successful completion of {@link Mono}.
+     * @return information about a file attached to an assistant, as used by tools that can read files along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> createAssistantFileWithResponseAsync(String assistantId, BinaryData request,
@@ -1424,17 +1331,13 @@ public Mono> createAssistantFileWithResponseAsync(String as
 
     /**
      * Attaches a previously uploaded file to an assistant for use by tools that can read files.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     file_id: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1451,8 +1354,7 @@ public Mono> createAssistantFileWithResponseAsync(String as
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return information about a file attached to an assistant, as used by tools that can read files along with
-     * {@link Response}.
+     * @return information about a file attached to an assistant, as used by tools that can read files along with {@link Response}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Response createAssistantFileWithResponse(String assistantId, BinaryData request,
@@ -1464,52 +1366,17 @@ public Response createAssistantFileWithResponse(String assistantId,
 
     /**
      * Gets a list of files attached to a specific assistant, as used by tools that can read files.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is - * 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. - * Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * before=obj_foo in order to fetch the previous page of the list.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -1533,8 +1400,7 @@ public Response createAssistantFileWithResponse(String assistantId,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a list of files attached to a specific assistant, as used by tools that can read files along with
-     * {@link Response} on successful completion of {@link Mono}.
+     * @return a list of files attached to a specific assistant, as used by tools that can read files along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> listAssistantFilesWithResponseAsync(String assistantId,
@@ -1546,52 +1412,17 @@ public Mono> listAssistantFilesWithResponseAsync(String ass
 
     /**
      * Gets a list of files attached to a specific assistant, as used by tools that can read files.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is - * 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. - * Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * before=obj_foo in order to fetch the previous page of the list.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -1615,8 +1446,7 @@ public Mono> listAssistantFilesWithResponseAsync(String ass
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a list of files attached to a specific assistant, as used by tools that can read files along with
-     * {@link Response}.
+     * @return a list of files attached to a specific assistant, as used by tools that can read files along with {@link Response}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Response listAssistantFilesWithResponse(String assistantId, RequestOptions requestOptions) {
@@ -1626,9 +1456,7 @@ public Response listAssistantFilesWithResponse(String assistantId, R
 
     /**
      * Retrieves a file attached to an assistant.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1645,8 +1473,7 @@ public Response listAssistantFilesWithResponse(String assistantId, R
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return information about a file attached to an assistant, as used by tools that can read files along with
-     * {@link Response} on successful completion of {@link Mono}.
+     * @return information about a file attached to an assistant, as used by tools that can read files along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getAssistantFileWithResponseAsync(String assistantId, String fileId,
@@ -1658,9 +1485,7 @@ public Mono> getAssistantFileWithResponseAsync(String assis
 
     /**
      * Retrieves a file attached to an assistant.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1677,8 +1502,7 @@ public Mono> getAssistantFileWithResponseAsync(String assis
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return information about a file attached to an assistant, as used by tools that can read files along with
-     * {@link Response}.
+     * @return information about a file attached to an assistant, as used by tools that can read files along with {@link Response}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Response getAssistantFileWithResponse(String assistantId, String fileId,
@@ -1691,9 +1515,7 @@ public Response getAssistantFileWithResponse(String assistantId, Str
     /**
      * Unlinks a previously attached file from an assistant, rendering it unavailable for use by tools that can read
      * files.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1709,8 +1531,7 @@ public Response getAssistantFileWithResponse(String assistantId, Str
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the status of an assistant file deletion operation along with {@link Response} on successful completion
-     * of {@link Mono}.
+     * @return the status of an assistant file deletion operation along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> deleteAssistantFileWithResponseAsync(String assistantId, String fileId,
@@ -1723,9 +1544,7 @@ public Mono> deleteAssistantFileWithResponseAsync(String as
     /**
      * Unlinks a previously attached file from an assistant, rendering it unavailable for use by tools that can read
      * files.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1753,9 +1572,7 @@ public Response deleteAssistantFileWithResponse(String assistantId,
 
     /**
      * Creates a new thread. Threads contain messages and can be run by assistants.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     messages (Optional): [
@@ -1775,9 +1592,7 @@ public Response deleteAssistantFileWithResponse(String assistantId,
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1795,8 +1610,7 @@ public Response deleteAssistantFileWithResponse(String assistantId,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return information about a single thread associated with an assistant along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return information about a single thread associated with an assistant along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> createThreadWithResponseAsync(BinaryData assistantThreadCreationOptions,
@@ -1808,9 +1622,7 @@ public Mono> createThreadWithResponseAsync(BinaryData assis
 
     /**
      * Creates a new thread. Threads contain messages and can be run by assistants.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     messages (Optional): [
@@ -1830,9 +1642,7 @@ public Mono> createThreadWithResponseAsync(BinaryData assis
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1862,9 +1672,7 @@ public Response createThreadWithResponse(BinaryData assistantThreadC
 
     /**
      * Gets information about an existing thread.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1882,8 +1690,7 @@ public Response createThreadWithResponse(BinaryData assistantThreadC
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return information about an existing thread along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return information about an existing thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getThreadWithResponseAsync(String threadId, RequestOptions requestOptions) {
@@ -1894,9 +1701,7 @@ public Mono> getThreadWithResponseAsync(String threadId, Re
 
     /**
      * Gets information about an existing thread.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1924,9 +1729,7 @@ public Response getThreadWithResponse(String threadId, RequestOption
 
     /**
      * Modifies an existing thread.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metadata (Optional): {
@@ -1934,9 +1737,7 @@ public Response getThreadWithResponse(String threadId, RequestOption
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -1955,8 +1756,7 @@ public Response getThreadWithResponse(String threadId, RequestOption
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return information about a single thread associated with an assistant along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return information about a single thread associated with an assistant along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> updateThreadWithResponseAsync(String threadId, BinaryData request,
@@ -1968,9 +1768,7 @@ public Mono> updateThreadWithResponseAsync(String threadId,
 
     /**
      * Modifies an existing thread.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metadata (Optional): {
@@ -1978,9 +1776,7 @@ public Mono> updateThreadWithResponseAsync(String threadId,
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2010,9 +1806,7 @@ public Response updateThreadWithResponse(String threadId, BinaryData
 
     /**
      * Deletes an existing thread.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2027,8 +1821,7 @@ public Response updateThreadWithResponse(String threadId, BinaryData
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the status of a thread deletion operation along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the status of a thread deletion operation along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> deleteThreadWithResponseAsync(String threadId, RequestOptions requestOptions) {
@@ -2039,9 +1832,7 @@ public Mono> deleteThreadWithResponseAsync(String threadId,
 
     /**
      * Deletes an existing thread.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2066,9 +1857,7 @@ public Response deleteThreadWithResponse(String threadId, RequestOpt
 
     /**
      * Creates a new message on a specified thread.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     role: String(user/assistant) (Required)
@@ -2081,9 +1870,7 @@ public Response deleteThreadWithResponse(String threadId, RequestOpt
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2093,6 +1880,7 @@ public Response deleteThreadWithResponse(String threadId, RequestOpt
      *     role: String(user/assistant) (Required)
      *     content (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     assistant_id: String (Optional)
@@ -2113,8 +1901,7 @@ public Response deleteThreadWithResponse(String threadId, RequestOpt
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a single, existing message within an assistant thread along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return a single, existing message within an assistant thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> createMessageWithResponseAsync(String threadId, BinaryData request,
@@ -2126,9 +1913,7 @@ public Mono> createMessageWithResponseAsync(String threadId
 
     /**
      * Creates a new message on a specified thread.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     role: String(user/assistant) (Required)
@@ -2141,9 +1926,7 @@ public Mono> createMessageWithResponseAsync(String threadId
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2153,6 +1936,7 @@ public Mono> createMessageWithResponseAsync(String threadId
      *     role: String(user/assistant) (Required)
      *     content (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     assistant_id: String (Optional)
@@ -2184,52 +1968,17 @@ public Response createMessageWithResponse(String threadId, BinaryDat
 
     /**
      * Gets a list of messages that exist on a thread.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is - * 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. - * Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * before=obj_foo in order to fetch the previous page of the list.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -2242,6 +1991,7 @@ public Response createMessageWithResponse(String threadId, BinaryDat
      *             role: String(user/assistant) (Required)
      *             content (Required): [
      *                  (Required){
+     *                     type: String (Optional)
      *                 }
      *             ]
      *             assistant_id: String (Optional)
@@ -2266,8 +2016,7 @@ public Response createMessageWithResponse(String threadId, BinaryDat
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a list of messages that exist on a thread along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a list of messages that exist on a thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> listMessagesWithResponseAsync(String threadId, RequestOptions requestOptions) {
@@ -2278,52 +2027,17 @@ public Mono> listMessagesWithResponseAsync(String threadId,
 
     /**
      * Gets a list of messages that exist on a thread.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is - * 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. - * Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * before=obj_foo in order to fetch the previous page of the list.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -2336,6 +2050,7 @@ public Mono> listMessagesWithResponseAsync(String threadId,
      *             role: String(user/assistant) (Required)
      *             content (Required): [
      *                  (Required){
+     *                     type: String (Optional)
      *                 }
      *             ]
      *             assistant_id: String (Optional)
@@ -2370,9 +2085,7 @@ public Response listMessagesWithResponse(String threadId, RequestOpt
 
     /**
      * Gets an existing message from an existing thread.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2382,6 +2095,7 @@ public Response listMessagesWithResponse(String threadId, RequestOpt
      *     role: String(user/assistant) (Required)
      *     content (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     assistant_id: String (Optional)
@@ -2402,8 +2116,7 @@ public Response listMessagesWithResponse(String threadId, RequestOpt
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return an existing message from an existing thread along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return an existing message from an existing thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getMessageWithResponseAsync(String threadId, String messageId,
@@ -2415,9 +2128,7 @@ public Mono> getMessageWithResponseAsync(String threadId, S
 
     /**
      * Gets an existing message from an existing thread.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2427,6 +2138,7 @@ public Mono> getMessageWithResponseAsync(String threadId, S
      *     role: String(user/assistant) (Required)
      *     content (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     assistant_id: String (Optional)
@@ -2458,9 +2170,7 @@ public Response getMessageWithResponse(String threadId, String messa
 
     /**
      * Modifies an existing message on an existing thread.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metadata (Optional): {
@@ -2468,9 +2178,7 @@ public Response getMessageWithResponse(String threadId, String messa
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2480,6 +2188,7 @@ public Response getMessageWithResponse(String threadId, String messa
      *     role: String(user/assistant) (Required)
      *     content (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     assistant_id: String (Optional)
@@ -2501,8 +2210,7 @@ public Response getMessageWithResponse(String threadId, String messa
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a single, existing message within an assistant thread along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return a single, existing message within an assistant thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> updateMessageWithResponseAsync(String threadId, String messageId,
@@ -2514,9 +2222,7 @@ public Mono> updateMessageWithResponseAsync(String threadId
 
     /**
      * Modifies an existing message on an existing thread.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metadata (Optional): {
@@ -2524,9 +2230,7 @@ public Mono> updateMessageWithResponseAsync(String threadId
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2536,6 +2240,7 @@ public Mono> updateMessageWithResponseAsync(String threadId
      *     role: String(user/assistant) (Required)
      *     content (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     assistant_id: String (Optional)
@@ -2569,52 +2274,17 @@ public Response updateMessageWithResponse(String threadId, String me
 
     /**
      * Gets a list of previously uploaded files associated with a message from a thread.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is - * 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. - * Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * before=obj_foo in order to fetch the previous page of the list.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -2639,8 +2309,7 @@ public Response updateMessageWithResponse(String threadId, String me
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a list of previously uploaded files associated with a message from a thread along with {@link Response}
-     * on successful completion of {@link Mono}.
+     * @return a list of previously uploaded files associated with a message from a thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> listMessageFilesWithResponseAsync(String threadId, String messageId,
@@ -2652,52 +2321,17 @@ public Mono> listMessageFilesWithResponseAsync(String threa
 
     /**
      * Gets a list of previously uploaded files associated with a message from a thread.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is - * 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. - * Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * before=obj_foo in order to fetch the previous page of the list.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -2734,9 +2368,7 @@ public Response listMessageFilesWithResponse(String threadId, String
 
     /**
      * Gets information about a file attachment to a message within a thread.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2754,8 +2386,7 @@ public Response listMessageFilesWithResponse(String threadId, String
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return information about a file attachment to a message within a thread along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return information about a file attachment to a message within a thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getMessageFileWithResponseAsync(String threadId, String messageId, String fileId,
@@ -2767,9 +2398,7 @@ public Mono> getMessageFileWithResponseAsync(String threadI
 
     /**
      * Gets information about a file attachment to a message within a thread.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2799,9 +2428,7 @@ public Response getMessageFileWithResponse(String threadId, String m
 
     /**
      * Creates a new run for an assistant thread.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     assistant_id: String (Required)
@@ -2810,6 +2437,7 @@ public Response getMessageFileWithResponse(String threadId, String m
      *     additional_instructions: String (Optional)
      *     tools (Optional): [
      *          (Optional){
+     *             type: String (Optional)
      *         }
      *     ]
      *     metadata (Optional): {
@@ -2817,9 +2445,7 @@ public Response getMessageFileWithResponse(String threadId, String m
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2828,6 +2454,7 @@ public Response getMessageFileWithResponse(String threadId, String m
      *     assistant_id: String (Required)
      *     status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *     required_action (Optional): {
+     *         type: String (Optional)
      *     }
      *     last_error (Required): {
      *         code: String (Required)
@@ -2837,6 +2464,7 @@ public Response getMessageFileWithResponse(String threadId, String m
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -2861,8 +2489,7 @@ public Response getMessageFileWithResponse(String threadId, String m
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return data representing a single evaluation run of an assistant thread along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return data representing a single evaluation run of an assistant thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> createRunWithResponseAsync(String threadId, BinaryData createRunOptions,
@@ -2874,9 +2501,7 @@ public Mono> createRunWithResponseAsync(String threadId, Bi
 
     /**
      * Creates a new run for an assistant thread.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     assistant_id: String (Required)
@@ -2885,6 +2510,7 @@ public Mono> createRunWithResponseAsync(String threadId, Bi
      *     additional_instructions: String (Optional)
      *     tools (Optional): [
      *          (Optional){
+     *             type: String (Optional)
      *         }
      *     ]
      *     metadata (Optional): {
@@ -2892,9 +2518,7 @@ public Mono> createRunWithResponseAsync(String threadId, Bi
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -2903,6 +2527,7 @@ public Mono> createRunWithResponseAsync(String threadId, Bi
      *     assistant_id: String (Required)
      *     status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *     required_action (Optional): {
+     *         type: String (Optional)
      *     }
      *     last_error (Required): {
      *         code: String (Required)
@@ -2912,6 +2537,7 @@ public Mono> createRunWithResponseAsync(String threadId, Bi
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -2948,52 +2574,17 @@ public Response createRunWithResponse(String threadId, BinaryData cr
 
     /**
      * Gets a list of runs for a specified thread.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is - * 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. - * Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * before=obj_foo in order to fetch the previous page of the list.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -3005,6 +2596,7 @@ public Response createRunWithResponse(String threadId, BinaryData cr
      *             assistant_id: String (Required)
      *             status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *             required_action (Optional): {
+     *                 type: String (Optional)
      *             }
      *             last_error (Required): {
      *                 code: String (Required)
@@ -3014,6 +2606,7 @@ public Response createRunWithResponse(String threadId, BinaryData cr
      *             instructions: String (Required)
      *             tools (Required): [
      *                  (Required){
+     *                     type: String (Optional)
      *                 }
      *             ]
      *             file_ids (Required): [
@@ -3042,8 +2635,7 @@ public Response createRunWithResponse(String threadId, BinaryData cr
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a list of runs for a specified thread along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a list of runs for a specified thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> listRunsWithResponseAsync(String threadId, RequestOptions requestOptions) {
@@ -3054,52 +2646,17 @@ public Mono> listRunsWithResponseAsync(String threadId, Req
 
     /**
      * Gets a list of runs for a specified thread.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is - * 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. - * Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * before=obj_foo in order to fetch the previous page of the list.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -3111,6 +2668,7 @@ public Mono> listRunsWithResponseAsync(String threadId, Req
      *             assistant_id: String (Required)
      *             status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *             required_action (Optional): {
+     *                 type: String (Optional)
      *             }
      *             last_error (Required): {
      *                 code: String (Required)
@@ -3120,6 +2678,7 @@ public Mono> listRunsWithResponseAsync(String threadId, Req
      *             instructions: String (Required)
      *             tools (Required): [
      *                  (Required){
+     *                     type: String (Optional)
      *                 }
      *             ]
      *             file_ids (Required): [
@@ -3158,9 +2717,7 @@ public Response listRunsWithResponse(String threadId, RequestOptions
 
     /**
      * Gets an existing run from an existing thread.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3169,6 +2726,7 @@ public Response listRunsWithResponse(String threadId, RequestOptions
      *     assistant_id: String (Required)
      *     status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *     required_action (Optional): {
+     *         type: String (Optional)
      *     }
      *     last_error (Required): {
      *         code: String (Required)
@@ -3178,6 +2736,7 @@ public Response listRunsWithResponse(String threadId, RequestOptions
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -3202,8 +2761,7 @@ public Response listRunsWithResponse(String threadId, RequestOptions
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return an existing run from an existing thread along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return an existing run from an existing thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getRunWithResponseAsync(String threadId, String runId,
@@ -3215,9 +2773,7 @@ public Mono> getRunWithResponseAsync(String threadId, Strin
 
     /**
      * Gets an existing run from an existing thread.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3226,6 +2782,7 @@ public Mono> getRunWithResponseAsync(String threadId, Strin
      *     assistant_id: String (Required)
      *     status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *     required_action (Optional): {
+     *         type: String (Optional)
      *     }
      *     last_error (Required): {
      *         code: String (Required)
@@ -3235,6 +2792,7 @@ public Mono> getRunWithResponseAsync(String threadId, Strin
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -3269,9 +2827,7 @@ public Response getRunWithResponse(String threadId, String runId, Re
 
     /**
      * Modifies an existing thread run.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metadata (Optional): {
@@ -3279,9 +2835,7 @@ public Response getRunWithResponse(String threadId, String runId, Re
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3290,6 +2844,7 @@ public Response getRunWithResponse(String threadId, String runId, Re
      *     assistant_id: String (Required)
      *     status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *     required_action (Optional): {
+     *         type: String (Optional)
      *     }
      *     last_error (Required): {
      *         code: String (Required)
@@ -3299,6 +2854,7 @@ public Response getRunWithResponse(String threadId, String runId, Re
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -3324,8 +2880,7 @@ public Response getRunWithResponse(String threadId, String runId, Re
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return data representing a single evaluation run of an assistant thread along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return data representing a single evaluation run of an assistant thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> updateRunWithResponseAsync(String threadId, String runId, BinaryData request,
@@ -3337,9 +2892,7 @@ public Mono> updateRunWithResponseAsync(String threadId, St
 
     /**
      * Modifies an existing thread run.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     metadata (Optional): {
@@ -3347,9 +2900,7 @@ public Mono> updateRunWithResponseAsync(String threadId, St
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3358,6 +2909,7 @@ public Mono> updateRunWithResponseAsync(String threadId, St
      *     assistant_id: String (Required)
      *     status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *     required_action (Optional): {
+     *         type: String (Optional)
      *     }
      *     last_error (Required): {
      *         code: String (Required)
@@ -3367,6 +2919,7 @@ public Mono> updateRunWithResponseAsync(String threadId, St
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -3403,11 +2956,8 @@ public Response updateRunWithResponse(String threadId, String runId,
     }
 
     /**
-     * Submits outputs from tools as requested by tool calls in a run. Runs that need submitted tool outputs will have a
-     * status of 'requires_action' with a required_action.type of 'submit_tool_outputs'.
-     * 

- * Request Body Schema - *

+ * Submits outputs from tools as requested by tool calls in a run. Runs that need submitted tool outputs will have a status of 'requires_action' with a required_action.type of 'submit_tool_outputs'. + *

Request Body Schema

*
{@code
      * {
      *     tool_outputs (Required): [
@@ -3418,9 +2968,7 @@ public Response updateRunWithResponse(String threadId, String runId,
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3429,6 +2977,7 @@ public Response updateRunWithResponse(String threadId, String runId,
      *     assistant_id: String (Required)
      *     status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *     required_action (Optional): {
+     *         type: String (Optional)
      *     }
      *     last_error (Required): {
      *         code: String (Required)
@@ -3438,6 +2987,7 @@ public Response updateRunWithResponse(String threadId, String runId,
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -3463,8 +3013,7 @@ public Response updateRunWithResponse(String threadId, String runId,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return data representing a single evaluation run of an assistant thread along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return data representing a single evaluation run of an assistant thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> submitToolOutputsToRunWithResponseAsync(String threadId, String runId,
@@ -3475,11 +3024,8 @@ public Mono> submitToolOutputsToRunWithResponseAsync(String
     }
 
     /**
-     * Submits outputs from tools as requested by tool calls in a run. Runs that need submitted tool outputs will have a
-     * status of 'requires_action' with a required_action.type of 'submit_tool_outputs'.
-     * 

- * Request Body Schema - *

+ * Submits outputs from tools as requested by tool calls in a run. Runs that need submitted tool outputs will have a status of 'requires_action' with a required_action.type of 'submit_tool_outputs'. + *

Request Body Schema

*
{@code
      * {
      *     tool_outputs (Required): [
@@ -3490,9 +3036,7 @@ public Mono> submitToolOutputsToRunWithResponseAsync(String
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3501,6 +3045,7 @@ public Mono> submitToolOutputsToRunWithResponseAsync(String
      *     assistant_id: String (Required)
      *     status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *     required_action (Optional): {
+     *         type: String (Optional)
      *     }
      *     last_error (Required): {
      *         code: String (Required)
@@ -3510,6 +3055,7 @@ public Mono> submitToolOutputsToRunWithResponseAsync(String
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -3547,9 +3093,7 @@ public Response submitToolOutputsToRunWithResponse(String threadId,
 
     /**
      * Cancels a run of an in progress thread.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3558,6 +3102,7 @@ public Response submitToolOutputsToRunWithResponse(String threadId,
      *     assistant_id: String (Required)
      *     status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *     required_action (Optional): {
+     *         type: String (Optional)
      *     }
      *     last_error (Required): {
      *         code: String (Required)
@@ -3567,6 +3112,7 @@ public Response submitToolOutputsToRunWithResponse(String threadId,
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -3591,8 +3137,7 @@ public Response submitToolOutputsToRunWithResponse(String threadId,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return data representing a single evaluation run of an assistant thread along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return data representing a single evaluation run of an assistant thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> cancelRunWithResponseAsync(String threadId, String runId,
@@ -3604,9 +3149,7 @@ public Mono> cancelRunWithResponseAsync(String threadId, St
 
     /**
      * Cancels a run of an in progress thread.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3615,6 +3158,7 @@ public Mono> cancelRunWithResponseAsync(String threadId, St
      *     assistant_id: String (Required)
      *     status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *     required_action (Optional): {
+     *         type: String (Optional)
      *     }
      *     last_error (Required): {
      *         code: String (Required)
@@ -3624,6 +3168,7 @@ public Mono> cancelRunWithResponseAsync(String threadId, St
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -3658,9 +3203,7 @@ public Response cancelRunWithResponse(String threadId, String runId,
 
     /**
      * Creates a new assistant thread and immediately starts a run using that new thread.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     assistant_id: String (Required)
@@ -3685,6 +3228,7 @@ public Response cancelRunWithResponse(String threadId, String runId,
      *     instructions: String (Optional)
      *     tools (Optional): [
      *          (Optional){
+     *             type: String (Optional)
      *         }
      *     ]
      *     metadata (Optional): {
@@ -3692,9 +3236,7 @@ public Response cancelRunWithResponse(String threadId, String runId,
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3703,6 +3245,7 @@ public Response cancelRunWithResponse(String threadId, String runId,
      *     assistant_id: String (Required)
      *     status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *     required_action (Optional): {
+     *         type: String (Optional)
      *     }
      *     last_error (Required): {
      *         code: String (Required)
@@ -3712,6 +3255,7 @@ public Response cancelRunWithResponse(String threadId, String runId,
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -3735,8 +3279,7 @@ public Response cancelRunWithResponse(String threadId, String runId,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return data representing a single evaluation run of an assistant thread along with {@link Response} on
-     * successful completion of {@link Mono}.
+     * @return data representing a single evaluation run of an assistant thread along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> createThreadAndRunWithResponseAsync(BinaryData createAndRunThreadOptions,
@@ -3748,9 +3291,7 @@ public Mono> createThreadAndRunWithResponseAsync(BinaryData
 
     /**
      * Creates a new assistant thread and immediately starts a run using that new thread.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     assistant_id: String (Required)
@@ -3775,6 +3316,7 @@ public Mono> createThreadAndRunWithResponseAsync(BinaryData
      *     instructions: String (Optional)
      *     tools (Optional): [
      *          (Optional){
+     *             type: String (Optional)
      *         }
      *     ]
      *     metadata (Optional): {
@@ -3782,9 +3324,7 @@ public Mono> createThreadAndRunWithResponseAsync(BinaryData
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3793,6 +3333,7 @@ public Mono> createThreadAndRunWithResponseAsync(BinaryData
      *     assistant_id: String (Required)
      *     status: String(queued/in_progress/requires_action/cancelling/cancelled/failed/completed/expired) (Required)
      *     required_action (Optional): {
+     *         type: String (Optional)
      *     }
      *     last_error (Required): {
      *         code: String (Required)
@@ -3802,6 +3343,7 @@ public Mono> createThreadAndRunWithResponseAsync(BinaryData
      *     instructions: String (Required)
      *     tools (Required): [
      *          (Required){
+     *             type: String (Optional)
      *         }
      *     ]
      *     file_ids (Required): [
@@ -3837,9 +3379,7 @@ public Response createThreadAndRunWithResponse(BinaryData createAndR
 
     /**
      * Gets a single run step from a thread run.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3850,6 +3390,7 @@ public Response createThreadAndRunWithResponse(BinaryData createAndR
      *     run_id: String (Required)
      *     status: String(in_progress/cancelled/failed/completed/expired) (Required)
      *     step_details (Required): {
+     *         type: String(message_creation/tool_calls) (Optional)
      *     }
      *     last_error (Required): {
      *         code: String(server_error/rate_limit_exceeded) (Required)
@@ -3886,9 +3427,7 @@ public Mono> getRunStepWithResponseAsync(String threadId, S
 
     /**
      * Gets a single run step from a thread run.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -3899,6 +3438,7 @@ public Mono> getRunStepWithResponseAsync(String threadId, S
      *     run_id: String (Required)
      *     status: String(in_progress/cancelled/failed/completed/expired) (Required)
      *     step_details (Required): {
+     *         type: String(message_creation/tool_calls) (Optional)
      *     }
      *     last_error (Required): {
      *         code: String(server_error/rate_limit_exceeded) (Required)
@@ -3935,52 +3475,17 @@ public Response getRunStepWithResponse(String threadId, String runId
 
     /**
      * Gets a list of run steps from a thread run.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is - * 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. - * Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * before=obj_foo in order to fetch the previous page of the list.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -3994,6 +3499,7 @@ public Response getRunStepWithResponse(String threadId, String runId
      *             run_id: String (Required)
      *             status: String(in_progress/cancelled/failed/completed/expired) (Required)
      *             step_details (Required): {
+     *                 type: String(message_creation/tool_calls) (Optional)
      *             }
      *             last_error (Required): {
      *                 code: String(server_error/rate_limit_exceeded) (Required)
@@ -4022,8 +3528,7 @@ public Response getRunStepWithResponse(String threadId, String runId
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a list of run steps from a thread run along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a list of run steps from a thread run along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> listRunStepsWithResponseAsync(String threadId, String runId,
@@ -4035,52 +3540,17 @@ public Mono> listRunStepsWithResponseAsync(String threadId,
 
     /**
      * Gets a list of run steps from a thread run.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is - * 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. - * Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if - * you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include - * before=obj_foo in order to fetch the previous page of the list.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
orderStringNoSort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -4094,6 +3564,7 @@ public Mono> listRunStepsWithResponseAsync(String threadId,
      *             run_id: String (Required)
      *             status: String(in_progress/cancelled/failed/completed/expired) (Required)
      *             step_details (Required): {
+     *                 type: String(message_creation/tool_calls) (Optional)
      *             }
      *             last_error (Required): {
      *                 code: String(server_error/rate_limit_exceeded) (Required)
@@ -4132,29 +3603,14 @@ public Response listRunStepsWithResponse(String threadId, String run
 
     /**
      * Gets a list of previously uploaded files.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
purposeStringNoA value that, when provided, limits list results to files matching the corresponding purpose. Allowed values: - * "fine-tune", "fine-tune-results", "assistants", "assistants_output".
Query Parameters
NameTypeRequiredDescription
purposeStringNoA value that, when provided, limits list results to files matching the corresponding purpose. Allowed values: "fine-tune", "fine-tune-results", "assistants", "assistants_output".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -4186,29 +3642,14 @@ public Mono> listFilesWithResponseAsync(RequestOptions requ
 
     /**
      * Gets a list of previously uploaded files.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
purposeStringNoA value that, when provided, limits list results to files matching the corresponding purpose. Allowed values: - * "fine-tune", "fine-tune-results", "assistants", "assistants_output".
Query Parameters
NameTypeRequiredDescription
purposeStringNoA value that, when provided, limits list results to files matching the corresponding purpose. Allowed values: "fine-tune", "fine-tune-results", "assistants", "assistants_output".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -4240,9 +3681,7 @@ public Response listFilesWithResponse(RequestOptions requestOptions)
 
     /**
      * Uploads a file for use by other operations.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -4260,8 +3699,7 @@ public Response listFilesWithResponse(RequestOptions requestOptions)
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return represents an assistant that can call the model and use tools along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return represents an assistant that can call the model and use tools along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> uploadFileWithResponseAsync(BinaryData request, RequestOptions requestOptions) {
@@ -4273,9 +3711,7 @@ public Mono> uploadFileWithResponseAsync(BinaryData request
 
     /**
      * Uploads a file for use by other operations.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -4304,9 +3740,7 @@ public Response uploadFileWithResponse(BinaryData request, RequestOp
 
     /**
      * Delete a previously uploaded file.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -4321,8 +3755,7 @@ public Response uploadFileWithResponse(BinaryData request, RequestOp
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a status response from a file deletion operation along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a status response from a file deletion operation along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> deleteFileWithResponseAsync(String fileId, RequestOptions requestOptions) {
@@ -4333,9 +3766,7 @@ public Mono> deleteFileWithResponseAsync(String fileId, Req
 
     /**
      * Delete a previously uploaded file.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     id: String (Required)
@@ -4360,9 +3791,7 @@ public Response deleteFileWithResponse(String fileId, RequestOptions
 
     /**
      * Returns information about a specific file. Does not retrieve file content.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
@@ -4380,8 +3809,7 @@ public Response deleteFileWithResponse(String fileId, RequestOptions
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return represents an assistant that can call the model and use tools along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return represents an assistant that can call the model and use tools along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getFileWithResponseAsync(String fileId, RequestOptions requestOptions) {
@@ -4392,9 +3820,7 @@ public Mono> getFileWithResponseAsync(String fileId, Reques
 
     /**
      * Returns information about a specific file. Does not retrieve file content.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     object: String (Required)
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/MultipartFormDataHelper.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/MultipartFormDataHelper.java
index 3d86b522f7d8..2c91eb15265d 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/MultipartFormDataHelper.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/MultipartFormDataHelper.java
@@ -8,6 +8,7 @@
 import com.azure.core.http.rest.RequestOptions;
 import com.azure.core.util.BinaryData;
 import com.azure.core.util.CoreUtils;
+
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.io.SequenceInputStream;
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/CreateAssistantFileRequest.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/CreateAssistantFileRequest.java
index dc32122995a0..71b4a0f58a09 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/CreateAssistantFileRequest.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/CreateAssistantFileRequest.java
@@ -5,21 +5,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The CreateAssistantFileRequest model.
  */
 @Immutable
-public final class CreateAssistantFileRequest {
+public final class CreateAssistantFileRequest implements JsonSerializable {
 
     /*
      * The ID of the previously uploaded file to attach.
      */
     @Generated
-    @JsonProperty(value = "file_id")
-    private String fileId;
+    private final String fileId;
 
     /**
      * Creates an instance of CreateAssistantFileRequest class.
@@ -27,8 +29,7 @@ public final class CreateAssistantFileRequest {
      * @param fileId the fileId value to set.
      */
     @Generated
-    @JsonCreator
-    public CreateAssistantFileRequest(@JsonProperty(value = "file_id") String fileId) {
+    public CreateAssistantFileRequest(String fileId) {
         this.fileId = fileId;
     }
 
@@ -41,4 +42,40 @@ public CreateAssistantFileRequest(@JsonProperty(value = "file_id") String fileId
     public String getFileId() {
         return this.fileId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("file_id", this.fileId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CreateAssistantFileRequest from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CreateAssistantFileRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the CreateAssistantFileRequest.
+     */
+    @Generated
+    public static CreateAssistantFileRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String fileId = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("file_id".equals(fieldName)) {
+                    fileId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new CreateAssistantFileRequest(fileId);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/CreateMessageRequest.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/CreateMessageRequest.java
index 8686880231d9..9c2fd7f8f33f 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/CreateMessageRequest.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/CreateMessageRequest.java
@@ -6,8 +6,11 @@
 import com.azure.ai.openai.assistants.models.MessageRole;
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -15,37 +18,30 @@
  * The CreateMessageRequest model.
  */
 @Fluent
-public final class CreateMessageRequest {
+public final class CreateMessageRequest implements JsonSerializable {
 
     /*
      * The role to associate with the new message.
      */
     @Generated
-    @JsonProperty(value = "role")
-    private MessageRole role;
+    private final MessageRole role;
 
     /*
      * The textual content for the new message.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private String content;
+    private final String content;
 
     /*
-     * A list of up to 10 file IDs to associate with the message, as used by tools like 'code_interpreter' or
-     * 'retrieval' that can read files.
+     * A list of up to 10 file IDs to associate with the message, as used by tools like 'code_interpreter' or 'retrieval' that can read files.
      */
     @Generated
-    @JsonProperty(value = "file_ids")
     private List fileIds;
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
     private Map metadata;
 
     /**
@@ -55,9 +51,7 @@ public final class CreateMessageRequest {
      * @param content the content value to set.
      */
     @Generated
-    @JsonCreator
-    public CreateMessageRequest(@JsonProperty(value = "role") MessageRole role,
-        @JsonProperty(value = "content") String content) {
+    public CreateMessageRequest(MessageRole role, String content) {
         this.role = role;
         this.content = content;
     }
@@ -83,8 +77,7 @@ public String getContent() {
     }
 
     /**
-     * Get the fileIds property: A list of up to 10 file IDs to associate with the message, as used by tools like
-     * 'code_interpreter' or 'retrieval' that can read files.
+     * Get the fileIds property: A list of up to 10 file IDs to associate with the message, as used by tools like 'code_interpreter' or 'retrieval' that can read files.
      *
      * @return the fileIds value.
      */
@@ -94,8 +87,7 @@ public List getFileIds() {
     }
 
     /**
-     * Set the fileIds property: A list of up to 10 file IDs to associate with the message, as used by tools like
-     * 'code_interpreter' or 'retrieval' that can read files.
+     * Set the fileIds property: A list of up to 10 file IDs to associate with the message, as used by tools like 'code_interpreter' or 'retrieval' that can read files.
      *
      * @param fileIds the fileIds value to set.
      * @return the CreateMessageRequest object itself.
@@ -107,9 +99,7 @@ public CreateMessageRequest setFileIds(List fileIds) {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -119,9 +109,7 @@ public Map getMetadata() {
     }
 
     /**
-     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @param metadata the metadata value to set.
      * @return the CreateMessageRequest object itself.
@@ -131,4 +119,55 @@ public CreateMessageRequest setMetadata(Map metadata) {
         this.metadata = metadata;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("role", this.role == null ? null : this.role.toString());
+        jsonWriter.writeStringField("content", this.content);
+        jsonWriter.writeArrayField("file_ids", this.fileIds, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CreateMessageRequest from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CreateMessageRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the CreateMessageRequest.
+     */
+    @Generated
+    public static CreateMessageRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            MessageRole role = null;
+            String content = null;
+            List fileIds = null;
+            Map metadata = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("role".equals(fieldName)) {
+                    role = MessageRole.fromString(reader.getString());
+                } else if ("content".equals(fieldName)) {
+                    content = reader.getString();
+                } else if ("file_ids".equals(fieldName)) {
+                    fileIds = reader.readArray(reader1 -> reader1.getString());
+                } else if ("metadata".equals(fieldName)) {
+                    metadata = reader.readMap(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            CreateMessageRequest deserializedCreateMessageRequest = new CreateMessageRequest(role, content);
+            deserializedCreateMessageRequest.fileIds = fileIds;
+            deserializedCreateMessageRequest.metadata = metadata;
+            return deserializedCreateMessageRequest;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/FileListResponse.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/FileListResponse.java
index 25f74270766f..a89defc18968 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/FileListResponse.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/FileListResponse.java
@@ -6,29 +6,30 @@
 import com.azure.ai.openai.assistants.models.OpenAIFile;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The response data from a file list operation.
  */
 @Immutable
-public final class FileListResponse {
+public final class FileListResponse implements JsonSerializable {
 
     /*
      * The object type, which is always 'list'.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "list";
+    private final String object = "list";
 
     /*
      * The files returned for the request.
      */
     @Generated
-    @JsonProperty(value = "data")
-    private List data;
+    private final List data;
 
     /**
      * Creates an instance of FileListResponse class.
@@ -36,8 +37,7 @@ public final class FileListResponse {
      * @param data the data value to set.
      */
     @Generated
-    @JsonCreator
-    private FileListResponse(@JsonProperty(value = "data") List data) {
+    private FileListResponse(List data) {
         this.data = data;
     }
 
@@ -60,4 +60,41 @@ public String getObject() {
     public List getData() {
         return this.data;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeArrayField("data", this.data, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FileListResponse from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FileListResponse if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FileListResponse.
+     */
+    @Generated
+    public static FileListResponse fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List data = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("data".equals(fieldName)) {
+                    data = reader.readArray(reader1 -> OpenAIFile.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new FileListResponse(data);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfAssistant.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfAssistant.java
index 3a97d5975bc7..71cca9562449 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfAssistant.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfAssistant.java
@@ -6,50 +6,48 @@
 import com.azure.ai.openai.assistants.models.Assistant;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The response data for a requested list of items.
  */
 @Immutable
-public final class OpenAIPageableListOfAssistant {
+public final class OpenAIPageableListOfAssistant implements JsonSerializable {
 
     /*
      * The object type, which is always list.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "list";
+    private final String object = "list";
 
     /*
      * The requested list of items.
      */
     @Generated
-    @JsonProperty(value = "data")
-    private List data;
+    private final List data;
 
     /*
      * The first ID represented in this list.
      */
     @Generated
-    @JsonProperty(value = "first_id")
-    private String firstId;
+    private final String firstId;
 
     /*
      * The last ID represented in this list.
      */
     @Generated
-    @JsonProperty(value = "last_id")
-    private String lastId;
+    private final String lastId;
 
     /*
      * A value indicating whether there are additional values available not captured in this list.
      */
     @Generated
-    @JsonProperty(value = "has_more")
-    private boolean hasMore;
+    private final boolean hasMore;
 
     /**
      * Creates an instance of OpenAIPageableListOfAssistant class.
@@ -60,10 +58,7 @@ public final class OpenAIPageableListOfAssistant {
      * @param hasMore the hasMore value to set.
      */
     @Generated
-    @JsonCreator
-    private OpenAIPageableListOfAssistant(@JsonProperty(value = "data") List data,
-        @JsonProperty(value = "first_id") String firstId, @JsonProperty(value = "last_id") String lastId,
-        @JsonProperty(value = "has_more") boolean hasMore) {
+    private OpenAIPageableListOfAssistant(List data, String firstId, String lastId, boolean hasMore) {
         this.data = data;
         this.firstId = firstId;
         this.lastId = lastId;
@@ -111,8 +106,7 @@ public String getLastId() {
     }
 
     /**
-     * Get the hasMore property: A value indicating whether there are additional values available not captured in this
-     * list.
+     * Get the hasMore property: A value indicating whether there are additional values available not captured in this list.
      *
      * @return the hasMore value.
      */
@@ -120,4 +114,53 @@ public String getLastId() {
     public boolean isHasMore() {
         return this.hasMore;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeArrayField("data", this.data, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("first_id", this.firstId);
+        jsonWriter.writeStringField("last_id", this.lastId);
+        jsonWriter.writeBooleanField("has_more", this.hasMore);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of OpenAIPageableListOfAssistant from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of OpenAIPageableListOfAssistant if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the OpenAIPageableListOfAssistant.
+     */
+    @Generated
+    public static OpenAIPageableListOfAssistant fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List data = null;
+            String firstId = null;
+            String lastId = null;
+            boolean hasMore = false;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("data".equals(fieldName)) {
+                    data = reader.readArray(reader1 -> Assistant.fromJson(reader1));
+                } else if ("first_id".equals(fieldName)) {
+                    firstId = reader.getString();
+                } else if ("last_id".equals(fieldName)) {
+                    lastId = reader.getString();
+                } else if ("has_more".equals(fieldName)) {
+                    hasMore = reader.getBoolean();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new OpenAIPageableListOfAssistant(data, firstId, lastId, hasMore);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfAssistantFile.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfAssistantFile.java
index f7bd3bcfc52f..42cf9554db13 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfAssistantFile.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfAssistantFile.java
@@ -6,50 +6,48 @@
 import com.azure.ai.openai.assistants.models.AssistantFile;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The response data for a requested list of items.
  */
 @Immutable
-public final class OpenAIPageableListOfAssistantFile {
+public final class OpenAIPageableListOfAssistantFile implements JsonSerializable {
 
     /*
      * The object type, which is always list.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "list";
+    private final String object = "list";
 
     /*
      * The requested list of items.
      */
     @Generated
-    @JsonProperty(value = "data")
-    private List data;
+    private final List data;
 
     /*
      * The first ID represented in this list.
      */
     @Generated
-    @JsonProperty(value = "first_id")
-    private String firstId;
+    private final String firstId;
 
     /*
      * The last ID represented in this list.
      */
     @Generated
-    @JsonProperty(value = "last_id")
-    private String lastId;
+    private final String lastId;
 
     /*
      * A value indicating whether there are additional values available not captured in this list.
      */
     @Generated
-    @JsonProperty(value = "has_more")
-    private boolean hasMore;
+    private final boolean hasMore;
 
     /**
      * Creates an instance of OpenAIPageableListOfAssistantFile class.
@@ -60,10 +58,8 @@ public final class OpenAIPageableListOfAssistantFile {
      * @param hasMore the hasMore value to set.
      */
     @Generated
-    @JsonCreator
-    private OpenAIPageableListOfAssistantFile(@JsonProperty(value = "data") List data,
-        @JsonProperty(value = "first_id") String firstId, @JsonProperty(value = "last_id") String lastId,
-        @JsonProperty(value = "has_more") boolean hasMore) {
+    private OpenAIPageableListOfAssistantFile(List data, String firstId, String lastId,
+        boolean hasMore) {
         this.data = data;
         this.firstId = firstId;
         this.lastId = lastId;
@@ -111,8 +107,7 @@ public String getLastId() {
     }
 
     /**
-     * Get the hasMore property: A value indicating whether there are additional values available not captured in this
-     * list.
+     * Get the hasMore property: A value indicating whether there are additional values available not captured in this list.
      *
      * @return the hasMore value.
      */
@@ -120,4 +115,53 @@ public String getLastId() {
     public boolean isHasMore() {
         return this.hasMore;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeArrayField("data", this.data, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("first_id", this.firstId);
+        jsonWriter.writeStringField("last_id", this.lastId);
+        jsonWriter.writeBooleanField("has_more", this.hasMore);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of OpenAIPageableListOfAssistantFile from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of OpenAIPageableListOfAssistantFile if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the OpenAIPageableListOfAssistantFile.
+     */
+    @Generated
+    public static OpenAIPageableListOfAssistantFile fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List data = null;
+            String firstId = null;
+            String lastId = null;
+            boolean hasMore = false;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("data".equals(fieldName)) {
+                    data = reader.readArray(reader1 -> AssistantFile.fromJson(reader1));
+                } else if ("first_id".equals(fieldName)) {
+                    firstId = reader.getString();
+                } else if ("last_id".equals(fieldName)) {
+                    lastId = reader.getString();
+                } else if ("has_more".equals(fieldName)) {
+                    hasMore = reader.getBoolean();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new OpenAIPageableListOfAssistantFile(data, firstId, lastId, hasMore);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfMessageFile.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfMessageFile.java
index ea3ef8734374..9dcc2bdc8715 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfMessageFile.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfMessageFile.java
@@ -6,50 +6,48 @@
 import com.azure.ai.openai.assistants.models.MessageFile;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The response data for a requested list of items.
  */
 @Immutable
-public final class OpenAIPageableListOfMessageFile {
+public final class OpenAIPageableListOfMessageFile implements JsonSerializable {
 
     /*
      * The object type, which is always list.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "list";
+    private final String object = "list";
 
     /*
      * The requested list of items.
      */
     @Generated
-    @JsonProperty(value = "data")
-    private List data;
+    private final List data;
 
     /*
      * The first ID represented in this list.
      */
     @Generated
-    @JsonProperty(value = "first_id")
-    private String firstId;
+    private final String firstId;
 
     /*
      * The last ID represented in this list.
      */
     @Generated
-    @JsonProperty(value = "last_id")
-    private String lastId;
+    private final String lastId;
 
     /*
      * A value indicating whether there are additional values available not captured in this list.
      */
     @Generated
-    @JsonProperty(value = "has_more")
-    private boolean hasMore;
+    private final boolean hasMore;
 
     /**
      * Creates an instance of OpenAIPageableListOfMessageFile class.
@@ -60,10 +58,7 @@ public final class OpenAIPageableListOfMessageFile {
      * @param hasMore the hasMore value to set.
      */
     @Generated
-    @JsonCreator
-    private OpenAIPageableListOfMessageFile(@JsonProperty(value = "data") List data,
-        @JsonProperty(value = "first_id") String firstId, @JsonProperty(value = "last_id") String lastId,
-        @JsonProperty(value = "has_more") boolean hasMore) {
+    private OpenAIPageableListOfMessageFile(List data, String firstId, String lastId, boolean hasMore) {
         this.data = data;
         this.firstId = firstId;
         this.lastId = lastId;
@@ -111,8 +106,7 @@ public String getLastId() {
     }
 
     /**
-     * Get the hasMore property: A value indicating whether there are additional values available not captured in this
-     * list.
+     * Get the hasMore property: A value indicating whether there are additional values available not captured in this list.
      *
      * @return the hasMore value.
      */
@@ -120,4 +114,53 @@ public String getLastId() {
     public boolean isHasMore() {
         return this.hasMore;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeArrayField("data", this.data, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("first_id", this.firstId);
+        jsonWriter.writeStringField("last_id", this.lastId);
+        jsonWriter.writeBooleanField("has_more", this.hasMore);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of OpenAIPageableListOfMessageFile from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of OpenAIPageableListOfMessageFile if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the OpenAIPageableListOfMessageFile.
+     */
+    @Generated
+    public static OpenAIPageableListOfMessageFile fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List data = null;
+            String firstId = null;
+            String lastId = null;
+            boolean hasMore = false;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("data".equals(fieldName)) {
+                    data = reader.readArray(reader1 -> MessageFile.fromJson(reader1));
+                } else if ("first_id".equals(fieldName)) {
+                    firstId = reader.getString();
+                } else if ("last_id".equals(fieldName)) {
+                    lastId = reader.getString();
+                } else if ("has_more".equals(fieldName)) {
+                    hasMore = reader.getBoolean();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new OpenAIPageableListOfMessageFile(data, firstId, lastId, hasMore);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfRunStep.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfRunStep.java
index 98061354a2e8..1aca2dd8679f 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfRunStep.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfRunStep.java
@@ -6,50 +6,48 @@
 import com.azure.ai.openai.assistants.models.RunStep;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The response data for a requested list of items.
  */
 @Immutable
-public final class OpenAIPageableListOfRunStep {
+public final class OpenAIPageableListOfRunStep implements JsonSerializable {
 
     /*
      * The object type, which is always list.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "list";
+    private final String object = "list";
 
     /*
      * The requested list of items.
      */
     @Generated
-    @JsonProperty(value = "data")
-    private List data;
+    private final List data;
 
     /*
      * The first ID represented in this list.
      */
     @Generated
-    @JsonProperty(value = "first_id")
-    private String firstId;
+    private final String firstId;
 
     /*
      * The last ID represented in this list.
      */
     @Generated
-    @JsonProperty(value = "last_id")
-    private String lastId;
+    private final String lastId;
 
     /*
      * A value indicating whether there are additional values available not captured in this list.
      */
     @Generated
-    @JsonProperty(value = "has_more")
-    private boolean hasMore;
+    private final boolean hasMore;
 
     /**
      * Creates an instance of OpenAIPageableListOfRunStep class.
@@ -60,10 +58,7 @@ public final class OpenAIPageableListOfRunStep {
      * @param hasMore the hasMore value to set.
      */
     @Generated
-    @JsonCreator
-    private OpenAIPageableListOfRunStep(@JsonProperty(value = "data") List data,
-        @JsonProperty(value = "first_id") String firstId, @JsonProperty(value = "last_id") String lastId,
-        @JsonProperty(value = "has_more") boolean hasMore) {
+    private OpenAIPageableListOfRunStep(List data, String firstId, String lastId, boolean hasMore) {
         this.data = data;
         this.firstId = firstId;
         this.lastId = lastId;
@@ -111,8 +106,7 @@ public String getLastId() {
     }
 
     /**
-     * Get the hasMore property: A value indicating whether there are additional values available not captured in this
-     * list.
+     * Get the hasMore property: A value indicating whether there are additional values available not captured in this list.
      *
      * @return the hasMore value.
      */
@@ -120,4 +114,53 @@ public String getLastId() {
     public boolean isHasMore() {
         return this.hasMore;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeArrayField("data", this.data, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("first_id", this.firstId);
+        jsonWriter.writeStringField("last_id", this.lastId);
+        jsonWriter.writeBooleanField("has_more", this.hasMore);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of OpenAIPageableListOfRunStep from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of OpenAIPageableListOfRunStep if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the OpenAIPageableListOfRunStep.
+     */
+    @Generated
+    public static OpenAIPageableListOfRunStep fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List data = null;
+            String firstId = null;
+            String lastId = null;
+            boolean hasMore = false;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("data".equals(fieldName)) {
+                    data = reader.readArray(reader1 -> RunStep.fromJson(reader1));
+                } else if ("first_id".equals(fieldName)) {
+                    firstId = reader.getString();
+                } else if ("last_id".equals(fieldName)) {
+                    lastId = reader.getString();
+                } else if ("has_more".equals(fieldName)) {
+                    hasMore = reader.getBoolean();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new OpenAIPageableListOfRunStep(data, firstId, lastId, hasMore);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfThreadMessage.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfThreadMessage.java
index bf6c67cfd050..b5728142fb06 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfThreadMessage.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfThreadMessage.java
@@ -6,50 +6,48 @@
 import com.azure.ai.openai.assistants.models.ThreadMessage;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The response data for a requested list of items.
  */
 @Immutable
-public final class OpenAIPageableListOfThreadMessage {
+public final class OpenAIPageableListOfThreadMessage implements JsonSerializable {
 
     /*
      * The object type, which is always list.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "list";
+    private final String object = "list";
 
     /*
      * The requested list of items.
      */
     @Generated
-    @JsonProperty(value = "data")
-    private List data;
+    private final List data;
 
     /*
      * The first ID represented in this list.
      */
     @Generated
-    @JsonProperty(value = "first_id")
-    private String firstId;
+    private final String firstId;
 
     /*
      * The last ID represented in this list.
      */
     @Generated
-    @JsonProperty(value = "last_id")
-    private String lastId;
+    private final String lastId;
 
     /*
      * A value indicating whether there are additional values available not captured in this list.
      */
     @Generated
-    @JsonProperty(value = "has_more")
-    private boolean hasMore;
+    private final boolean hasMore;
 
     /**
      * Creates an instance of OpenAIPageableListOfThreadMessage class.
@@ -60,10 +58,8 @@ public final class OpenAIPageableListOfThreadMessage {
      * @param hasMore the hasMore value to set.
      */
     @Generated
-    @JsonCreator
-    private OpenAIPageableListOfThreadMessage(@JsonProperty(value = "data") List data,
-        @JsonProperty(value = "first_id") String firstId, @JsonProperty(value = "last_id") String lastId,
-        @JsonProperty(value = "has_more") boolean hasMore) {
+    private OpenAIPageableListOfThreadMessage(List data, String firstId, String lastId,
+        boolean hasMore) {
         this.data = data;
         this.firstId = firstId;
         this.lastId = lastId;
@@ -111,8 +107,7 @@ public String getLastId() {
     }
 
     /**
-     * Get the hasMore property: A value indicating whether there are additional values available not captured in this
-     * list.
+     * Get the hasMore property: A value indicating whether there are additional values available not captured in this list.
      *
      * @return the hasMore value.
      */
@@ -120,4 +115,53 @@ public String getLastId() {
     public boolean isHasMore() {
         return this.hasMore;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeArrayField("data", this.data, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("first_id", this.firstId);
+        jsonWriter.writeStringField("last_id", this.lastId);
+        jsonWriter.writeBooleanField("has_more", this.hasMore);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of OpenAIPageableListOfThreadMessage from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of OpenAIPageableListOfThreadMessage if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the OpenAIPageableListOfThreadMessage.
+     */
+    @Generated
+    public static OpenAIPageableListOfThreadMessage fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List data = null;
+            String firstId = null;
+            String lastId = null;
+            boolean hasMore = false;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("data".equals(fieldName)) {
+                    data = reader.readArray(reader1 -> ThreadMessage.fromJson(reader1));
+                } else if ("first_id".equals(fieldName)) {
+                    firstId = reader.getString();
+                } else if ("last_id".equals(fieldName)) {
+                    lastId = reader.getString();
+                } else if ("has_more".equals(fieldName)) {
+                    hasMore = reader.getBoolean();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new OpenAIPageableListOfThreadMessage(data, firstId, lastId, hasMore);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfThreadRun.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfThreadRun.java
index 445221b26009..cf1829231cd7 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfThreadRun.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/OpenAIPageableListOfThreadRun.java
@@ -6,50 +6,48 @@
 import com.azure.ai.openai.assistants.models.ThreadRun;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The response data for a requested list of items.
  */
 @Immutable
-public final class OpenAIPageableListOfThreadRun {
+public final class OpenAIPageableListOfThreadRun implements JsonSerializable {
 
     /*
      * The object type, which is always list.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "list";
+    private final String object = "list";
 
     /*
      * The requested list of items.
      */
     @Generated
-    @JsonProperty(value = "data")
-    private List data;
+    private final List data;
 
     /*
      * The first ID represented in this list.
      */
     @Generated
-    @JsonProperty(value = "first_id")
-    private String firstId;
+    private final String firstId;
 
     /*
      * The last ID represented in this list.
      */
     @Generated
-    @JsonProperty(value = "last_id")
-    private String lastId;
+    private final String lastId;
 
     /*
      * A value indicating whether there are additional values available not captured in this list.
      */
     @Generated
-    @JsonProperty(value = "has_more")
-    private boolean hasMore;
+    private final boolean hasMore;
 
     /**
      * Creates an instance of OpenAIPageableListOfThreadRun class.
@@ -60,10 +58,7 @@ public final class OpenAIPageableListOfThreadRun {
      * @param hasMore the hasMore value to set.
      */
     @Generated
-    @JsonCreator
-    private OpenAIPageableListOfThreadRun(@JsonProperty(value = "data") List data,
-        @JsonProperty(value = "first_id") String firstId, @JsonProperty(value = "last_id") String lastId,
-        @JsonProperty(value = "has_more") boolean hasMore) {
+    private OpenAIPageableListOfThreadRun(List data, String firstId, String lastId, boolean hasMore) {
         this.data = data;
         this.firstId = firstId;
         this.lastId = lastId;
@@ -111,8 +106,7 @@ public String getLastId() {
     }
 
     /**
-     * Get the hasMore property: A value indicating whether there are additional values available not captured in this
-     * list.
+     * Get the hasMore property: A value indicating whether there are additional values available not captured in this list.
      *
      * @return the hasMore value.
      */
@@ -120,4 +114,53 @@ public String getLastId() {
     public boolean isHasMore() {
         return this.hasMore;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeArrayField("data", this.data, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("first_id", this.firstId);
+        jsonWriter.writeStringField("last_id", this.lastId);
+        jsonWriter.writeBooleanField("has_more", this.hasMore);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of OpenAIPageableListOfThreadRun from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of OpenAIPageableListOfThreadRun if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the OpenAIPageableListOfThreadRun.
+     */
+    @Generated
+    public static OpenAIPageableListOfThreadRun fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List data = null;
+            String firstId = null;
+            String lastId = null;
+            boolean hasMore = false;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("data".equals(fieldName)) {
+                    data = reader.readArray(reader1 -> ThreadRun.fromJson(reader1));
+                } else if ("first_id".equals(fieldName)) {
+                    firstId = reader.getString();
+                } else if ("last_id".equals(fieldName)) {
+                    lastId = reader.getString();
+                } else if ("has_more".equals(fieldName)) {
+                    hasMore = reader.getBoolean();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new OpenAIPageableListOfThreadRun(data, firstId, lastId, hasMore);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/SubmitToolOutputsToRunRequest.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/SubmitToolOutputsToRunRequest.java
index ed82d43ae599..71f99ab05c70 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/SubmitToolOutputsToRunRequest.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/SubmitToolOutputsToRunRequest.java
@@ -6,22 +6,24 @@
 import com.azure.ai.openai.assistants.models.ToolOutput;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The SubmitToolOutputsToRunRequest model.
  */
 @Immutable
-public final class SubmitToolOutputsToRunRequest {
+public final class SubmitToolOutputsToRunRequest implements JsonSerializable {
 
     /*
      * The list of tool outputs requested by tool calls from the specified run.
      */
     @Generated
-    @JsonProperty(value = "tool_outputs")
-    private List toolOutputs;
+    private final List toolOutputs;
 
     /**
      * Creates an instance of SubmitToolOutputsToRunRequest class.
@@ -29,8 +31,7 @@ public final class SubmitToolOutputsToRunRequest {
      * @param toolOutputs the toolOutputs value to set.
      */
     @Generated
-    @JsonCreator
-    public SubmitToolOutputsToRunRequest(@JsonProperty(value = "tool_outputs") List toolOutputs) {
+    public SubmitToolOutputsToRunRequest(List toolOutputs) {
         this.toolOutputs = toolOutputs;
     }
 
@@ -43,4 +44,40 @@ public SubmitToolOutputsToRunRequest(@JsonProperty(value = "tool_outputs") List<
     public List getToolOutputs() {
         return this.toolOutputs;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("tool_outputs", this.toolOutputs, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SubmitToolOutputsToRunRequest from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SubmitToolOutputsToRunRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the SubmitToolOutputsToRunRequest.
+     */
+    @Generated
+    public static SubmitToolOutputsToRunRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List toolOutputs = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("tool_outputs".equals(fieldName)) {
+                    toolOutputs = reader.readArray(reader1 -> ToolOutput.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new SubmitToolOutputsToRunRequest(toolOutputs);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UpdateMessageRequest.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UpdateMessageRequest.java
index 67ef3119330d..7ec648984847 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UpdateMessageRequest.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UpdateMessageRequest.java
@@ -5,22 +5,23 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * The UpdateMessageRequest model.
  */
 @Fluent
-public final class UpdateMessageRequest {
+public final class UpdateMessageRequest implements JsonSerializable {
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
     private Map metadata;
 
     /**
@@ -31,9 +32,7 @@ public UpdateMessageRequest() {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -43,9 +42,7 @@ public Map getMetadata() {
     }
 
     /**
-     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @param metadata the metadata value to set.
      * @return the UpdateMessageRequest object itself.
@@ -55,4 +52,40 @@ public UpdateMessageRequest setMetadata(Map metadata) {
         this.metadata = metadata;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of UpdateMessageRequest from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of UpdateMessageRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the UpdateMessageRequest.
+     */
+    @Generated
+    public static UpdateMessageRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            UpdateMessageRequest deserializedUpdateMessageRequest = new UpdateMessageRequest();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("metadata".equals(fieldName)) {
+                    Map metadata = reader.readMap(reader1 -> reader1.getString());
+                    deserializedUpdateMessageRequest.metadata = metadata;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedUpdateMessageRequest;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UpdateRunRequest.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UpdateRunRequest.java
index 4be0b606f8f4..ef4822837bc1 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UpdateRunRequest.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UpdateRunRequest.java
@@ -5,22 +5,23 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * The UpdateRunRequest model.
  */
 @Fluent
-public final class UpdateRunRequest {
+public final class UpdateRunRequest implements JsonSerializable {
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
     private Map metadata;
 
     /**
@@ -31,9 +32,7 @@ public UpdateRunRequest() {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -43,9 +42,7 @@ public Map getMetadata() {
     }
 
     /**
-     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @param metadata the metadata value to set.
      * @return the UpdateRunRequest object itself.
@@ -55,4 +52,40 @@ public UpdateRunRequest setMetadata(Map metadata) {
         this.metadata = metadata;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of UpdateRunRequest from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of UpdateRunRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the UpdateRunRequest.
+     */
+    @Generated
+    public static UpdateRunRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            UpdateRunRequest deserializedUpdateRunRequest = new UpdateRunRequest();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("metadata".equals(fieldName)) {
+                    Map metadata = reader.readMap(reader1 -> reader1.getString());
+                    deserializedUpdateRunRequest.metadata = metadata;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedUpdateRunRequest;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UpdateThreadRequest.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UpdateThreadRequest.java
index 565b1cf1c332..0d4cf7cf13b3 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UpdateThreadRequest.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UpdateThreadRequest.java
@@ -5,22 +5,23 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * The UpdateThreadRequest model.
  */
 @Fluent
-public final class UpdateThreadRequest {
+public final class UpdateThreadRequest implements JsonSerializable {
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
     private Map metadata;
 
     /**
@@ -31,9 +32,7 @@ public UpdateThreadRequest() {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -43,9 +42,7 @@ public Map getMetadata() {
     }
 
     /**
-     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @param metadata the metadata value to set.
      * @return the UpdateThreadRequest object itself.
@@ -55,4 +52,40 @@ public UpdateThreadRequest setMetadata(Map metadata) {
         this.metadata = metadata;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of UpdateThreadRequest from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of UpdateThreadRequest if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the UpdateThreadRequest.
+     */
+    @Generated
+    public static UpdateThreadRequest fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            UpdateThreadRequest deserializedUpdateThreadRequest = new UpdateThreadRequest();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("metadata".equals(fieldName)) {
+                    Map metadata = reader.readMap(reader1 -> reader1.getString());
+                    deserializedUpdateThreadRequest.metadata = metadata;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedUpdateThreadRequest;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UploadFileRequest.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UploadFileRequest.java
index 9ea29f5e994d..e7523507c91a 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UploadFileRequest.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/implementation/models/UploadFileRequest.java
@@ -18,13 +18,13 @@ public final class UploadFileRequest {
      * The file data (not filename) to upload.
      */
     @Generated
-    private FileDetails file;
+    private final FileDetails file;
 
     /*
      * The intended purpose of the file.
      */
     @Generated
-    private FilePurpose purpose;
+    private final FilePurpose purpose;
 
     /*
      * A filename to associate with the uploaded data.
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/Assistant.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/Assistant.java
index 2cbae3a16986..e2c74f2f461b 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/Assistant.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/Assistant.java
@@ -5,8 +5,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.Instant;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
@@ -17,79 +20,67 @@
  * Represents an assistant that can call the model and use tools.
  */
 @Immutable
-public final class Assistant {
+public final class Assistant implements JsonSerializable {
 
     /*
      * The identifier, which can be referenced in API endpoints.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * The object type, which is always assistant.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "assistant";
+    private final String object = "assistant";
 
     /*
      * The Unix timestamp, in seconds, representing when this object was created.
      */
     @Generated
-    @JsonProperty(value = "created_at")
-    private long createdAt;
+    private final long createdAt;
 
     /*
      * The name of the assistant.
      */
     @Generated
-    @JsonProperty(value = "name")
-    private String name;
+    private final String name;
 
     /*
      * The description of the assistant.
      */
     @Generated
-    @JsonProperty(value = "description")
-    private String description;
+    private final String description;
 
     /*
      * The ID of the model to use.
      */
     @Generated
-    @JsonProperty(value = "model")
-    private String model;
+    private final String model;
 
     /*
      * The system instructions for the assistant to use.
      */
     @Generated
-    @JsonProperty(value = "instructions")
-    private String instructions;
+    private final String instructions;
 
     /*
      * The collection of tools enabled for the assistant.
      */
     @Generated
-    @JsonProperty(value = "tools")
-    private List tools;
+    private final List tools;
 
     /*
      * A list of attached file IDs, ordered by creation date in ascending order.
      */
     @Generated
-    @JsonProperty(value = "file_ids")
-    private List fileIds;
+    private final List fileIds;
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
-    private Map metadata;
+    private final Map metadata;
 
     /**
      * Get the id property: The identifier, which can be referenced in API endpoints.
@@ -182,9 +173,7 @@ public List getFileIds() {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -220,15 +209,72 @@ private Assistant(String id, OffsetDateTime createdAt, String name, String descr
         this.metadata = metadata;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeLongField("created_at", this.createdAt);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("model", this.model);
+        jsonWriter.writeStringField("instructions", this.instructions);
+        jsonWriter.writeArrayField("tools", this.tools, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("file_ids", this.fileIds, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of Assistant from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of Assistant if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the Assistant.
+     */
     @Generated
-    @JsonCreator
-    private Assistant(@JsonProperty(value = "id") String id, @JsonProperty(value = "created_at") long createdAt,
-        @JsonProperty(value = "name") String name, @JsonProperty(value = "description") String description,
-        @JsonProperty(value = "model") String model, @JsonProperty(value = "instructions") String instructions,
-        @JsonProperty(value = "tools") List tools,
-        @JsonProperty(value = "file_ids") List fileIds,
-        @JsonProperty(value = "metadata") Map metadata) {
-        this(id, OffsetDateTime.ofInstant(Instant.ofEpochSecond(createdAt), ZoneOffset.UTC), name, description, model,
-            instructions, tools, fileIds, metadata);
+    public static Assistant fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            OffsetDateTime createdAt = null;
+            String name = null;
+            String description = null;
+            String model = null;
+            String instructions = null;
+            List tools = null;
+            List fileIds = null;
+            Map metadata = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("created_at".equals(fieldName)) {
+                    createdAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC);
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("model".equals(fieldName)) {
+                    model = reader.getString();
+                } else if ("instructions".equals(fieldName)) {
+                    instructions = reader.getString();
+                } else if ("tools".equals(fieldName)) {
+                    tools = reader.readArray(reader1 -> ToolDefinition.fromJson(reader1));
+                } else if ("file_ids".equals(fieldName)) {
+                    fileIds = reader.readArray(reader1 -> reader1.getString());
+                } else if ("metadata".equals(fieldName)) {
+                    metadata = reader.readMap(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new Assistant(id, createdAt, name, description, model, instructions, tools, fileIds, metadata);
+        });
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantCreationOptions.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantCreationOptions.java
index 86767512f5bb..bae233c6ffff 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantCreationOptions.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantCreationOptions.java
@@ -5,8 +5,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,57 +17,48 @@
  * The request details to use when creating a new assistant.
  */
 @Fluent
-public final class AssistantCreationOptions {
+public final class AssistantCreationOptions implements JsonSerializable {
 
     /*
      * The ID of the model to use.
      */
     @Generated
-    @JsonProperty(value = "model")
-    private String model;
+    private final String model;
 
     /*
      * The name of the new assistant.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The description of the new assistant.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The system instructions for the new assistant to use.
      */
     @Generated
-    @JsonProperty(value = "instructions")
     private String instructions;
 
     /*
      * The collection of tools to enable for the new assistant.
      */
     @Generated
-    @JsonProperty(value = "tools")
     private List tools;
 
     /*
      * A list of previously uploaded file IDs to attach to the assistant.
      */
     @Generated
-    @JsonProperty(value = "file_ids")
     private List fileIds;
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
     private Map metadata;
 
     /**
@@ -73,8 +67,7 @@ public final class AssistantCreationOptions {
      * @param model the model value to set.
      */
     @Generated
-    @JsonCreator
-    public AssistantCreationOptions(@JsonProperty(value = "model") String model) {
+    public AssistantCreationOptions(String model) {
         this.model = model;
     }
 
@@ -199,9 +192,7 @@ public AssistantCreationOptions setFileIds(List fileIds) {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -211,9 +202,7 @@ public Map getMetadata() {
     }
 
     /**
-     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @param metadata the metadata value to set.
      * @return the AssistantCreationOptions object itself.
@@ -223,4 +212,71 @@ public AssistantCreationOptions setMetadata(Map metadata) {
         this.metadata = metadata;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("model", this.model);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("instructions", this.instructions);
+        jsonWriter.writeArrayField("tools", this.tools, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("file_ids", this.fileIds, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AssistantCreationOptions from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AssistantCreationOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AssistantCreationOptions.
+     */
+    @Generated
+    public static AssistantCreationOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String model = null;
+            String name = null;
+            String description = null;
+            String instructions = null;
+            List tools = null;
+            List fileIds = null;
+            Map metadata = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("model".equals(fieldName)) {
+                    model = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else if ("instructions".equals(fieldName)) {
+                    instructions = reader.getString();
+                } else if ("tools".equals(fieldName)) {
+                    tools = reader.readArray(reader1 -> ToolDefinition.fromJson(reader1));
+                } else if ("file_ids".equals(fieldName)) {
+                    fileIds = reader.readArray(reader1 -> reader1.getString());
+                } else if ("metadata".equals(fieldName)) {
+                    metadata = reader.readMap(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            AssistantCreationOptions deserializedAssistantCreationOptions = new AssistantCreationOptions(model);
+            deserializedAssistantCreationOptions.name = name;
+            deserializedAssistantCreationOptions.description = description;
+            deserializedAssistantCreationOptions.instructions = instructions;
+            deserializedAssistantCreationOptions.tools = tools;
+            deserializedAssistantCreationOptions.fileIds = fileIds;
+            deserializedAssistantCreationOptions.metadata = metadata;
+            return deserializedAssistantCreationOptions;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantDeletionStatus.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantDeletionStatus.java
index e963bd399bed..cd195cf9c0b2 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantDeletionStatus.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantDeletionStatus.java
@@ -5,35 +5,35 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The status of an assistant deletion operation.
  */
 @Immutable
-public final class AssistantDeletionStatus {
+public final class AssistantDeletionStatus implements JsonSerializable {
 
     /*
      * The ID of the resource specified for deletion.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * A value indicating whether deletion was successful.
      */
     @Generated
-    @JsonProperty(value = "deleted")
-    private boolean deleted;
+    private final boolean deleted;
 
     /*
      * The object type, which is always 'assistant.deleted'.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "assistant.deleted";
+    private final String object = "assistant.deleted";
 
     /**
      * Creates an instance of AssistantDeletionStatus class.
@@ -42,9 +42,7 @@ public final class AssistantDeletionStatus {
      * @param deleted the deleted value to set.
      */
     @Generated
-    @JsonCreator
-    private AssistantDeletionStatus(@JsonProperty(value = "id") String id,
-        @JsonProperty(value = "deleted") boolean deleted) {
+    private AssistantDeletionStatus(String id, boolean deleted) {
         this.id = id;
         this.deleted = deleted;
     }
@@ -78,4 +76,45 @@ public boolean isDeleted() {
     public String getObject() {
         return this.object;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeBooleanField("deleted", this.deleted);
+        jsonWriter.writeStringField("object", this.object);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AssistantDeletionStatus from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AssistantDeletionStatus if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AssistantDeletionStatus.
+     */
+    @Generated
+    public static AssistantDeletionStatus fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            boolean deleted = false;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("deleted".equals(fieldName)) {
+                    deleted = reader.getBoolean();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new AssistantDeletionStatus(id, deleted);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantFile.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantFile.java
index 4351c765aa64..6ddfc7116f29 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantFile.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantFile.java
@@ -5,8 +5,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.Instant;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
@@ -15,35 +18,31 @@
  * Information about a file attached to an assistant, as used by tools that can read files.
  */
 @Immutable
-public final class AssistantFile {
+public final class AssistantFile implements JsonSerializable {
 
     /*
      * The identifier, which can be referenced in API endpoints.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * The object type, which is always 'assistant.file'.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "assistant.file";
+    private final String object = "assistant.file";
 
     /*
      * The Unix timestamp, in seconds, representing when this object was created.
      */
     @Generated
-    @JsonProperty(value = "created_at")
-    private long createdAt;
+    private final long createdAt;
 
     /*
      * The assistant ID that the file is attached to.
      */
     @Generated
-    @JsonProperty(value = "assistant_id")
-    private String assistantId;
+    private final String assistantId;
 
     /**
      * Creates an instance of AssistantFile class.
@@ -59,13 +58,6 @@ private AssistantFile(String id, OffsetDateTime createdAt, String assistantId) {
         this.assistantId = assistantId;
     }
 
-    @Generated
-    @JsonCreator
-    private AssistantFile(@JsonProperty(value = "id") String id, @JsonProperty(value = "created_at") long createdAt,
-        @JsonProperty(value = "assistant_id") String assistantId) {
-        this(id, OffsetDateTime.ofInstant(Instant.ofEpochSecond(createdAt), ZoneOffset.UTC), assistantId);
-    }
-
     /**
      * Get the id property: The identifier, which can be referenced in API endpoints.
      *
@@ -105,4 +97,49 @@ public OffsetDateTime getCreatedAt() {
     public String getAssistantId() {
         return this.assistantId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeLongField("created_at", this.createdAt);
+        jsonWriter.writeStringField("assistant_id", this.assistantId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AssistantFile from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AssistantFile if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AssistantFile.
+     */
+    @Generated
+    public static AssistantFile fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            OffsetDateTime createdAt = null;
+            String assistantId = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("created_at".equals(fieldName)) {
+                    createdAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC);
+                } else if ("assistant_id".equals(fieldName)) {
+                    assistantId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new AssistantFile(id, createdAt, assistantId);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantFileDeletionStatus.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantFileDeletionStatus.java
index 6edb7880e932..3bbc5349b4f3 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantFileDeletionStatus.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantFileDeletionStatus.java
@@ -5,35 +5,35 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The status of an assistant file deletion operation.
  */
 @Immutable
-public final class AssistantFileDeletionStatus {
+public final class AssistantFileDeletionStatus implements JsonSerializable {
 
     /*
      * The ID of the resource specified for deletion.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * A value indicating whether deletion was successful.
      */
     @Generated
-    @JsonProperty(value = "deleted")
-    private boolean deleted;
+    private final boolean deleted;
 
     /*
      * The object type, which is always 'assistant.file.deleted'.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "assistant.file.deleted";
+    private final String object = "assistant.file.deleted";
 
     /**
      * Creates an instance of AssistantFileDeletionStatus class.
@@ -42,9 +42,7 @@ public final class AssistantFileDeletionStatus {
      * @param deleted the deleted value to set.
      */
     @Generated
-    @JsonCreator
-    private AssistantFileDeletionStatus(@JsonProperty(value = "id") String id,
-        @JsonProperty(value = "deleted") boolean deleted) {
+    private AssistantFileDeletionStatus(String id, boolean deleted) {
         this.id = id;
         this.deleted = deleted;
     }
@@ -78,4 +76,45 @@ public boolean isDeleted() {
     public String getObject() {
         return this.object;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeBooleanField("deleted", this.deleted);
+        jsonWriter.writeStringField("object", this.object);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AssistantFileDeletionStatus from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AssistantFileDeletionStatus if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AssistantFileDeletionStatus.
+     */
+    @Generated
+    public static AssistantFileDeletionStatus fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            boolean deleted = false;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("deleted".equals(fieldName)) {
+                    deleted = reader.getBoolean();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new AssistantFileDeletionStatus(id, deleted);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantThread.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantThread.java
index 685d8a2345c9..b318ccb6915a 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantThread.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantThread.java
@@ -5,8 +5,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.Instant;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
@@ -16,37 +19,31 @@
  * Information about a single thread associated with an assistant.
  */
 @Immutable
-public final class AssistantThread {
+public final class AssistantThread implements JsonSerializable {
 
     /*
      * The identifier, which can be referenced in API endpoints.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * The object type, which is always 'thread'.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "thread";
+    private final String object = "thread";
 
     /*
      * The Unix timestamp, in seconds, representing when this object was created.
      */
     @Generated
-    @JsonProperty(value = "created_at")
-    private long createdAt;
+    private final long createdAt;
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
-    private Map metadata;
+    private final Map metadata;
 
     /**
      * Get the id property: The identifier, which can be referenced in API endpoints.
@@ -79,9 +76,7 @@ public OffsetDateTime getCreatedAt() {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -104,10 +99,48 @@ private AssistantThread(String id, OffsetDateTime createdAt, Map
         this.metadata = metadata;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeLongField("created_at", this.createdAt);
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AssistantThread from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AssistantThread if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the AssistantThread.
+     */
     @Generated
-    @JsonCreator
-    private AssistantThread(@JsonProperty(value = "id") String id, @JsonProperty(value = "created_at") long createdAt,
-        @JsonProperty(value = "metadata") Map metadata) {
-        this(id, OffsetDateTime.ofInstant(Instant.ofEpochSecond(createdAt), ZoneOffset.UTC), metadata);
+    public static AssistantThread fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            OffsetDateTime createdAt = null;
+            Map metadata = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("created_at".equals(fieldName)) {
+                    createdAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC);
+                } else if ("metadata".equals(fieldName)) {
+                    metadata = reader.readMap(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new AssistantThread(id, createdAt, metadata);
+        });
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantThreadCreationOptions.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantThreadCreationOptions.java
index 18dfb003b376..20386825d0e6 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantThreadCreationOptions.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/AssistantThreadCreationOptions.java
@@ -5,7 +5,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -13,22 +17,18 @@
  * The details used to create a new assistant thread.
  */
 @Fluent
-public final class AssistantThreadCreationOptions {
+public final class AssistantThreadCreationOptions implements JsonSerializable {
 
     /*
      * The initial messages to associate with the new thread.
      */
     @Generated
-    @JsonProperty(value = "messages")
     private List messages;
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
     private Map metadata;
 
     /**
@@ -61,9 +61,7 @@ public AssistantThreadCreationOptions setMessages(List getMetadata() {
     }
 
     /**
-     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @param metadata the metadata value to set.
      * @return the AssistantThreadCreationOptions object itself.
@@ -85,4 +81,46 @@ public AssistantThreadCreationOptions setMetadata(Map metadata)
         this.metadata = metadata;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("messages", this.messages, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AssistantThreadCreationOptions from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AssistantThreadCreationOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AssistantThreadCreationOptions.
+     */
+    @Generated
+    public static AssistantThreadCreationOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AssistantThreadCreationOptions deserializedAssistantThreadCreationOptions
+                = new AssistantThreadCreationOptions();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("messages".equals(fieldName)) {
+                    List messages
+                        = reader.readArray(reader1 -> ThreadInitializationMessage.fromJson(reader1));
+                    deserializedAssistantThreadCreationOptions.messages = messages;
+                } else if ("metadata".equals(fieldName)) {
+                    Map metadata = reader.readMap(reader1 -> reader1.getString());
+                    deserializedAssistantThreadCreationOptions.metadata = metadata;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedAssistantThreadCreationOptions;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/CodeInterpreterToolDefinition.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/CodeInterpreterToolDefinition.java
index 9b910222fba3..a1139e812071 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/CodeInterpreterToolDefinition.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/CodeInterpreterToolDefinition.java
@@ -5,14 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The input definition information for a code interpreter tool as used to configure an assistant.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("code_interpreter")
 @Immutable
 public final class CodeInterpreterToolDefinition extends ToolDefinition {
 
@@ -21,5 +21,42 @@ public final class CodeInterpreterToolDefinition extends ToolDefinition {
      */
     @Generated
     public CodeInterpreterToolDefinition() {
+        setType("code_interpreter");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", getType());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CodeInterpreterToolDefinition from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CodeInterpreterToolDefinition if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the CodeInterpreterToolDefinition.
+     */
+    @Generated
+    public static CodeInterpreterToolDefinition fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            CodeInterpreterToolDefinition deserializedCodeInterpreterToolDefinition
+                = new CodeInterpreterToolDefinition();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    deserializedCodeInterpreterToolDefinition.setType(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedCodeInterpreterToolDefinition;
+        });
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/CreateAndRunThreadOptions.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/CreateAndRunThreadOptions.java
index 79db329f2ede..dcdd0828ab2a 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/CreateAndRunThreadOptions.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/CreateAndRunThreadOptions.java
@@ -5,8 +5,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,50 +17,42 @@
  * The details used when creating and immediately running a new assistant thread.
  */
 @Fluent
-public final class CreateAndRunThreadOptions {
+public final class CreateAndRunThreadOptions implements JsonSerializable {
 
     /*
      * The ID of the assistant for which the thread should be created.
      */
     @Generated
-    @JsonProperty(value = "assistant_id")
-    private String assistantId;
+    private final String assistantId;
 
     /*
      * The details used to create the new thread.
      */
     @Generated
-    @JsonProperty(value = "thread")
     private AssistantThreadCreationOptions thread;
 
     /*
      * The overridden model that the assistant should use to run the thread.
      */
     @Generated
-    @JsonProperty(value = "model")
     private String model;
 
     /*
      * The overridden system instructions the assistant should use to run the thread.
      */
     @Generated
-    @JsonProperty(value = "instructions")
     private String instructions;
 
     /*
      * The overridden list of enabled tools the assistant should use to run the thread.
      */
     @Generated
-    @JsonProperty(value = "tools")
     private List tools;
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
     private Map metadata;
 
     /**
@@ -66,8 +61,7 @@ public final class CreateAndRunThreadOptions {
      * @param assistantId the assistantId value to set.
      */
     @Generated
-    @JsonCreator
-    public CreateAndRunThreadOptions(@JsonProperty(value = "assistant_id") String assistantId) {
+    public CreateAndRunThreadOptions(String assistantId) {
         this.assistantId = assistantId;
     }
 
@@ -170,9 +164,7 @@ public CreateAndRunThreadOptions setTools(List tools) {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -182,9 +174,7 @@ public Map getMetadata() {
     }
 
     /**
-     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @param metadata the metadata value to set.
      * @return the CreateAndRunThreadOptions object itself.
@@ -194,4 +184,67 @@ public CreateAndRunThreadOptions setMetadata(Map metadata) {
         this.metadata = metadata;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("assistant_id", this.assistantId);
+        jsonWriter.writeJsonField("thread", this.thread);
+        jsonWriter.writeStringField("model", this.model);
+        jsonWriter.writeStringField("instructions", this.instructions);
+        jsonWriter.writeArrayField("tools", this.tools, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CreateAndRunThreadOptions from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CreateAndRunThreadOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the CreateAndRunThreadOptions.
+     */
+    @Generated
+    public static CreateAndRunThreadOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String assistantId = null;
+            AssistantThreadCreationOptions thread = null;
+            String model = null;
+            String instructions = null;
+            List tools = null;
+            Map metadata = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("assistant_id".equals(fieldName)) {
+                    assistantId = reader.getString();
+                } else if ("thread".equals(fieldName)) {
+                    thread = AssistantThreadCreationOptions.fromJson(reader);
+                } else if ("model".equals(fieldName)) {
+                    model = reader.getString();
+                } else if ("instructions".equals(fieldName)) {
+                    instructions = reader.getString();
+                } else if ("tools".equals(fieldName)) {
+                    tools = reader.readArray(reader1 -> ToolDefinition.fromJson(reader1));
+                } else if ("metadata".equals(fieldName)) {
+                    metadata = reader.readMap(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            CreateAndRunThreadOptions deserializedCreateAndRunThreadOptions
+                = new CreateAndRunThreadOptions(assistantId);
+            deserializedCreateAndRunThreadOptions.thread = thread;
+            deserializedCreateAndRunThreadOptions.model = model;
+            deserializedCreateAndRunThreadOptions.instructions = instructions;
+            deserializedCreateAndRunThreadOptions.tools = tools;
+            deserializedCreateAndRunThreadOptions.metadata = metadata;
+            return deserializedCreateAndRunThreadOptions;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/CreateRunOptions.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/CreateRunOptions.java
index a1cfe5967f57..c54a7cbea08f 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/CreateRunOptions.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/CreateRunOptions.java
@@ -5,8 +5,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,52 +17,43 @@
  * The details used when creating a new run of an assistant thread.
  */
 @Fluent
-public final class CreateRunOptions {
+public final class CreateRunOptions implements JsonSerializable {
 
     /*
      * The ID of the assistant that should run the thread.
      */
     @Generated
-    @JsonProperty(value = "assistant_id")
-    private String assistantId;
+    private final String assistantId;
 
     /*
      * The overridden model name that the assistant should use to run the thread.
      */
     @Generated
-    @JsonProperty(value = "model")
     private String model;
 
     /*
      * The overridden system instructions that the assistant should use to run the thread.
      */
     @Generated
-    @JsonProperty(value = "instructions")
     private String instructions;
 
     /*
-     * Additional instructions to append at the end of the instructions for the run. This is useful for modifying the
-     * behavior
+     * Additional instructions to append at the end of the instructions for the run. This is useful for modifying the behavior
      * on a per-run basis without overriding other instructions.
      */
     @Generated
-    @JsonProperty(value = "additional_instructions")
     private String additionalInstructions;
 
     /*
      * The overridden list of enabled tools that the assistant should use to run the thread.
      */
     @Generated
-    @JsonProperty(value = "tools")
     private List tools;
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
     private Map metadata;
 
     /**
@@ -95,8 +89,7 @@ public CreateRunOptions setModel(String model) {
     }
 
     /**
-     * Get the instructions property: The overridden system instructions that the assistant should use to run the
-     * thread.
+     * Get the instructions property: The overridden system instructions that the assistant should use to run the thread.
      *
      * @return the instructions value.
      */
@@ -106,8 +99,7 @@ public String getInstructions() {
     }
 
     /**
-     * Set the instructions property: The overridden system instructions that the assistant should use to run the
-     * thread.
+     * Set the instructions property: The overridden system instructions that the assistant should use to run the thread.
      *
      * @param instructions the instructions value to set.
      * @return the CreateRunOptions object itself.
@@ -119,8 +111,7 @@ public CreateRunOptions setInstructions(String instructions) {
     }
 
     /**
-     * Get the additionalInstructions property: Additional instructions to append at the end of the instructions for
-     * the run. This is useful for modifying the behavior
+     * Get the additionalInstructions property: Additional instructions to append at the end of the instructions for the run. This is useful for modifying the behavior
      * on a per-run basis without overriding other instructions.
      *
      * @return the additionalInstructions value.
@@ -153,9 +144,7 @@ public CreateRunOptions setTools(List tools) {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -165,9 +154,7 @@ public Map getMetadata() {
     }
 
     /**
-     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @param metadata the metadata value to set.
      * @return the CreateRunOptions object itself.
@@ -184,14 +171,12 @@ public CreateRunOptions setMetadata(Map metadata) {
      * @param assistantId the assistantId value to set.
      */
     @Generated
-    @JsonCreator
-    public CreateRunOptions(@JsonProperty(value = "assistant_id") String assistantId) {
+    public CreateRunOptions(String assistantId) {
         this.assistantId = assistantId;
     }
 
     /**
-     * Set the additionalInstructions property: Additional instructions to append at the end of the instructions for
-     * the run. This is useful for modifying the behavior
+     * Set the additionalInstructions property: Additional instructions to append at the end of the instructions for the run. This is useful for modifying the behavior
      * on a per-run basis without overriding other instructions.
      *
      * @param additionalInstructions the additionalInstructions value to set.
@@ -202,4 +187,66 @@ public CreateRunOptions setAdditionalInstructions(String additionalInstructions)
         this.additionalInstructions = additionalInstructions;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("assistant_id", this.assistantId);
+        jsonWriter.writeStringField("model", this.model);
+        jsonWriter.writeStringField("instructions", this.instructions);
+        jsonWriter.writeStringField("additional_instructions", this.additionalInstructions);
+        jsonWriter.writeArrayField("tools", this.tools, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of CreateRunOptions from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of CreateRunOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the CreateRunOptions.
+     */
+    @Generated
+    public static CreateRunOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String assistantId = null;
+            String model = null;
+            String instructions = null;
+            String additionalInstructions = null;
+            List tools = null;
+            Map metadata = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("assistant_id".equals(fieldName)) {
+                    assistantId = reader.getString();
+                } else if ("model".equals(fieldName)) {
+                    model = reader.getString();
+                } else if ("instructions".equals(fieldName)) {
+                    instructions = reader.getString();
+                } else if ("additional_instructions".equals(fieldName)) {
+                    additionalInstructions = reader.getString();
+                } else if ("tools".equals(fieldName)) {
+                    tools = reader.readArray(reader1 -> ToolDefinition.fromJson(reader1));
+                } else if ("metadata".equals(fieldName)) {
+                    metadata = reader.readMap(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            CreateRunOptions deserializedCreateRunOptions = new CreateRunOptions(assistantId);
+            deserializedCreateRunOptions.model = model;
+            deserializedCreateRunOptions.instructions = instructions;
+            deserializedCreateRunOptions.additionalInstructions = additionalInstructions;
+            deserializedCreateRunOptions.tools = tools;
+            deserializedCreateRunOptions.metadata = metadata;
+            return deserializedCreateRunOptions;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FileDeletionStatus.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FileDeletionStatus.java
index 427c98a9dcc1..0ee3c7fc123e 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FileDeletionStatus.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FileDeletionStatus.java
@@ -5,35 +5,35 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * A status response from a file deletion operation.
  */
 @Immutable
-public final class FileDeletionStatus {
+public final class FileDeletionStatus implements JsonSerializable {
 
     /*
      * The ID of the resource specified for deletion.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * A value indicating whether deletion was successful.
      */
     @Generated
-    @JsonProperty(value = "deleted")
-    private boolean deleted;
+    private final boolean deleted;
 
     /*
      * The object type, which is always 'file'.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "file";
+    private final String object = "file";
 
     /**
      * Creates an instance of FileDeletionStatus class.
@@ -42,9 +42,7 @@ public final class FileDeletionStatus {
      * @param deleted the deleted value to set.
      */
     @Generated
-    @JsonCreator
-    private FileDeletionStatus(@JsonProperty(value = "id") String id,
-        @JsonProperty(value = "deleted") boolean deleted) {
+    private FileDeletionStatus(String id, boolean deleted) {
         this.id = id;
         this.deleted = deleted;
     }
@@ -78,4 +76,45 @@ public boolean isDeleted() {
     public String getObject() {
         return this.object;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeBooleanField("deleted", this.deleted);
+        jsonWriter.writeStringField("object", this.object);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FileDeletionStatus from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FileDeletionStatus if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FileDeletionStatus.
+     */
+    @Generated
+    public static FileDeletionStatus fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            boolean deleted = false;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("deleted".equals(fieldName)) {
+                    deleted = reader.getBoolean();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new FileDeletionStatus(id, deleted);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FileDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FileDetails.java
index b2580b247e5b..a54a7522d5e3 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FileDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FileDetails.java
@@ -17,7 +17,7 @@ public final class FileDetails {
      * The content of the file
      */
     @Generated
-    private BinaryData content;
+    private final BinaryData content;
 
     /*
      * The filename of the file
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FilePurpose.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FilePurpose.java
index 25fa4075ab03..cf5e66446e38 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FilePurpose.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FilePurpose.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -54,7 +53,6 @@ public FilePurpose() {
      * @return the corresponding FilePurpose.
      */
     @Generated
-    @JsonCreator
     public static FilePurpose fromString(String name) {
         return fromString(name, FilePurpose.class);
     }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FunctionDefinition.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FunctionDefinition.java
index 9609dcb3586a..0bebb08c397b 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FunctionDefinition.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FunctionDefinition.java
@@ -5,35 +5,35 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The input definition information for a function.
  */
 @Fluent
-public final class FunctionDefinition {
+public final class FunctionDefinition implements JsonSerializable {
 
     /*
      * The name of the function to be called.
      */
     @Generated
-    @JsonProperty(value = "name")
-    private String name;
+    private final String name;
 
     /*
      * A description of what the function does, used by the model to choose when and how to call the function.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The parameters the functions accepts, described as a JSON Schema object.
      */
     @Generated
-    @JsonProperty(value = "parameters")
-    private Object parameters;
+    private final Object parameters;
 
     /**
      * Get the name property: The name of the function to be called.
@@ -46,8 +46,7 @@ public String getName() {
     }
 
     /**
-     * Get the description property: A description of what the function does, used by the model to choose when and how
-     * to call the function.
+     * Get the description property: A description of what the function does, used by the model to choose when and how to call the function.
      *
      * @return the description value.
      */
@@ -73,16 +72,13 @@ public Object getParameters() {
      * @param parameters the parameters value to set.
      */
     @Generated
-    @JsonCreator
-    public FunctionDefinition(@JsonProperty(value = "name") String name,
-        @JsonProperty(value = "parameters") Object parameters) {
+    public FunctionDefinition(String name, Object parameters) {
         this.name = name;
         this.parameters = parameters;
     }
 
     /**
-     * Set the description property: A description of what the function does, used by the model to choose when and how
-     * to call the function.
+     * Set the description property: A description of what the function does, used by the model to choose when and how to call the function.
      *
      * @param description the description value to set.
      * @return the FunctionDefinition object itself.
@@ -92,4 +88,50 @@ public FunctionDefinition setDescription(String description) {
         this.description = description;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeUntypedField("parameters", this.parameters);
+        jsonWriter.writeStringField("description", this.description);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FunctionDefinition from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FunctionDefinition if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FunctionDefinition.
+     */
+    @Generated
+    public static FunctionDefinition fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String name = null;
+            Object parameters = null;
+            String description = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("parameters".equals(fieldName)) {
+                    parameters = reader.readUntyped();
+                } else if ("description".equals(fieldName)) {
+                    description = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            FunctionDefinition deserializedFunctionDefinition = new FunctionDefinition(name, parameters);
+            deserializedFunctionDefinition.description = description;
+            return deserializedFunctionDefinition;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FunctionToolDefinition.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FunctionToolDefinition.java
index 8507974de36a..2e0d4377a02a 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FunctionToolDefinition.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/FunctionToolDefinition.java
@@ -5,16 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The input definition information for a function tool as used to configure an assistant.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("function")
 @Immutable
 public final class FunctionToolDefinition extends ToolDefinition {
 
@@ -22,8 +20,7 @@ public final class FunctionToolDefinition extends ToolDefinition {
      * The definition of the concrete function that the function tool should call.
      */
     @Generated
-    @JsonProperty(value = "function")
-    private FunctionDefinition function;
+    private final FunctionDefinition function;
 
     /**
      * Creates an instance of FunctionToolDefinition class.
@@ -31,8 +28,8 @@ public final class FunctionToolDefinition extends ToolDefinition {
      * @param function the function value to set.
      */
     @Generated
-    @JsonCreator
-    public FunctionToolDefinition(@JsonProperty(value = "function") FunctionDefinition function) {
+    public FunctionToolDefinition(FunctionDefinition function) {
+        setType("function");
         this.function = function;
     }
 
@@ -45,4 +42,46 @@ public FunctionToolDefinition(@JsonProperty(value = "function") FunctionDefiniti
     public FunctionDefinition getFunction() {
         return this.function;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", getType());
+        jsonWriter.writeJsonField("function", this.function);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of FunctionToolDefinition from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of FunctionToolDefinition if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the FunctionToolDefinition.
+     */
+    @Generated
+    public static FunctionToolDefinition fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String type = "function";
+            FunctionDefinition function = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else if ("function".equals(fieldName)) {
+                    function = FunctionDefinition.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            FunctionToolDefinition deserializedFunctionToolDefinition = new FunctionToolDefinition(function);
+            deserializedFunctionToolDefinition.setType(type);
+            return deserializedFunctionToolDefinition;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ListSortOrder.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ListSortOrder.java
index 2dafc6c8bded..39d6b7674639 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ListSortOrder.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ListSortOrder.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public ListSortOrder() {
      * @return the corresponding ListSortOrder.
      */
     @Generated
-    @JsonCreator
     public static ListSortOrder fromString(String name) {
         return fromString(name, ListSortOrder.class);
     }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageContent.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageContent.java
index 833d8e4584ef..59d97fad05a0 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageContent.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageContent.java
@@ -5,29 +5,115 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An abstract representation of a single item of thread message content.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "type",
-    defaultImpl = MessageContent.class)
-@JsonTypeName("MessageContent")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "text", value = MessageTextContent.class),
-    @JsonSubTypes.Type(name = "image_file", value = MessageImageFileContent.class) })
 @Immutable
-public class MessageContent {
+public class MessageContent implements JsonSerializable {
 
     /**
      * Creates an instance of MessageContent class.
      */
     @Generated
     protected MessageContent() {
+        this.type = "MessageContent";
+    }
+
+    /*
+     * The object type.
+     */
+    @Generated
+    private String type;
+
+    /**
+     * Get the type property: The object type.
+     *
+     * @return the type value.
+     */
+    @Generated
+    public String getType() {
+        return this.type;
+    }
+
+    /**
+     * Set the type property: The object type.
+     *
+     * @param type the type value to set.
+     * @return the MessageContent object itself.
+     */
+    @Generated
+    MessageContent setType(String type) {
+        this.type = type;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", this.type);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MessageContent from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MessageContent if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the MessageContent.
+     */
+    @Generated
+    public static MessageContent fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("type".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("text".equals(discriminatorValue)) {
+                    return MessageTextContent.fromJson(readerToUse.reset());
+                } else if ("image_file".equals(discriminatorValue)) {
+                    return MessageImageFileContent.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static MessageContent fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            MessageContent deserializedMessageContent = new MessageContent();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    deserializedMessageContent.type = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedMessageContent;
+        });
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageFile.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageFile.java
index d94710138f6c..3a409d97df6e 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageFile.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageFile.java
@@ -5,8 +5,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.Instant;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
@@ -15,35 +18,31 @@
  * Information about a file attached to an assistant thread message.
  */
 @Immutable
-public final class MessageFile {
+public final class MessageFile implements JsonSerializable {
 
     /*
      * The identifier, which can be referenced in API endpoints.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * The object type, which is always 'thread.message.file'.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "thread.message.file";
+    private final String object = "thread.message.file";
 
     /*
      * The Unix timestamp, in seconds, representing when this object was created.
      */
     @Generated
-    @JsonProperty(value = "created_at")
-    private long createdAt;
+    private final long createdAt;
 
     /*
      * The ID of the message that this file is attached to.
      */
     @Generated
-    @JsonProperty(value = "message_id")
-    private String messageId;
+    private final String messageId;
 
     /**
      * Creates an instance of MessageFile class.
@@ -59,13 +58,6 @@ private MessageFile(String id, OffsetDateTime createdAt, String messageId) {
         this.messageId = messageId;
     }
 
-    @Generated
-    @JsonCreator
-    private MessageFile(@JsonProperty(value = "id") String id, @JsonProperty(value = "created_at") long createdAt,
-        @JsonProperty(value = "message_id") String messageId) {
-        this(id, OffsetDateTime.ofInstant(Instant.ofEpochSecond(createdAt), ZoneOffset.UTC), messageId);
-    }
-
     /**
      * Get the id property: The identifier, which can be referenced in API endpoints.
      *
@@ -105,4 +97,49 @@ public OffsetDateTime getCreatedAt() {
     public String getMessageId() {
         return this.messageId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeLongField("created_at", this.createdAt);
+        jsonWriter.writeStringField("message_id", this.messageId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MessageFile from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MessageFile if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the MessageFile.
+     */
+    @Generated
+    public static MessageFile fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            OffsetDateTime createdAt = null;
+            String messageId = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("created_at".equals(fieldName)) {
+                    createdAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC);
+                } else if ("message_id".equals(fieldName)) {
+                    messageId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new MessageFile(id, createdAt, messageId);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageImageFileContent.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageImageFileContent.java
index 03128041d803..2798c38da9bd 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageImageFileContent.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageImageFileContent.java
@@ -5,16 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * A representation of image file content in a thread message.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("image_file")
 @Immutable
 public final class MessageImageFileContent extends MessageContent {
 
@@ -22,8 +20,7 @@ public final class MessageImageFileContent extends MessageContent {
      * The image file for this thread message content item.
      */
     @Generated
-    @JsonProperty(value = "image_file")
-    private MessageImageFileDetails imageFile;
+    private final MessageImageFileDetails imageFile;
 
     /**
      * Creates an instance of MessageImageFileContent class.
@@ -31,8 +28,8 @@ public final class MessageImageFileContent extends MessageContent {
      * @param imageFile the imageFile value to set.
      */
     @Generated
-    @JsonCreator
-    private MessageImageFileContent(@JsonProperty(value = "image_file") MessageImageFileDetails imageFile) {
+    private MessageImageFileContent(MessageImageFileDetails imageFile) {
+        setType("image_file");
         this.imageFile = imageFile;
     }
 
@@ -45,4 +42,46 @@ private MessageImageFileContent(@JsonProperty(value = "image_file") MessageImage
     public MessageImageFileDetails getImageFile() {
         return this.imageFile;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", getType());
+        jsonWriter.writeJsonField("image_file", this.imageFile);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MessageImageFileContent from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MessageImageFileContent if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the MessageImageFileContent.
+     */
+    @Generated
+    public static MessageImageFileContent fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String type = "image_file";
+            MessageImageFileDetails imageFile = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else if ("image_file".equals(fieldName)) {
+                    imageFile = MessageImageFileDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            MessageImageFileContent deserializedMessageImageFileContent = new MessageImageFileContent(imageFile);
+            deserializedMessageImageFileContent.setType(type);
+            return deserializedMessageImageFileContent;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageImageFileDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageImageFileDetails.java
index 795447705b69..07a979d4c920 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageImageFileDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageImageFileDetails.java
@@ -5,21 +5,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An image reference, as represented in thread message content.
  */
 @Immutable
-public final class MessageImageFileDetails {
+public final class MessageImageFileDetails implements JsonSerializable {
 
     /*
      * The ID for the file associated with this image.
      */
     @Generated
-    @JsonProperty(value = "file_id")
-    private MessageImageFileIdDetails fileId;
+    private final MessageImageFileIdDetails fileId;
 
     /**
      * Creates an instance of MessageImageFileDetails class.
@@ -27,8 +29,7 @@ public final class MessageImageFileDetails {
      * @param fileId the fileId value to set.
      */
     @Generated
-    @JsonCreator
-    private MessageImageFileDetails(@JsonProperty(value = "file_id") MessageImageFileIdDetails fileId) {
+    private MessageImageFileDetails(MessageImageFileIdDetails fileId) {
         this.fileId = fileId;
     }
 
@@ -41,4 +42,40 @@ private MessageImageFileDetails(@JsonProperty(value = "file_id") MessageImageFil
     public MessageImageFileIdDetails getFileId() {
         return this.fileId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeJsonField("file_id", this.fileId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MessageImageFileDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MessageImageFileDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the MessageImageFileDetails.
+     */
+    @Generated
+    public static MessageImageFileDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            MessageImageFileIdDetails fileId = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("file_id".equals(fieldName)) {
+                    fileId = MessageImageFileIdDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new MessageImageFileDetails(fileId);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageImageFileIdDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageImageFileIdDetails.java
index 2797af48ffe2..a8a0564701e7 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageImageFileIdDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageImageFileIdDetails.java
@@ -5,21 +5,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An encapsulation of an image file ID, as used by message image content.
  */
 @Immutable
-public final class MessageImageFileIdDetails {
+public final class MessageImageFileIdDetails implements JsonSerializable {
 
     /*
      * The ID of the specific image file.
      */
     @Generated
-    @JsonProperty(value = "file_id")
-    private String fileId;
+    private final String fileId;
 
     /**
      * Creates an instance of MessageImageFileIdDetails class.
@@ -27,8 +29,7 @@ public final class MessageImageFileIdDetails {
      * @param fileId the fileId value to set.
      */
     @Generated
-    @JsonCreator
-    private MessageImageFileIdDetails(@JsonProperty(value = "file_id") String fileId) {
+    private MessageImageFileIdDetails(String fileId) {
         this.fileId = fileId;
     }
 
@@ -41,4 +42,40 @@ private MessageImageFileIdDetails(@JsonProperty(value = "file_id") String fileId
     public String getFileId() {
         return this.fileId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("file_id", this.fileId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MessageImageFileIdDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MessageImageFileIdDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the MessageImageFileIdDetails.
+     */
+    @Generated
+    public static MessageImageFileIdDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String fileId = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("file_id".equals(fieldName)) {
+                    fileId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new MessageImageFileIdDetails(fileId);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageRole.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageRole.java
index 00c7d3c92b6e..9e8dea6a2a8c 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageRole.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageRole.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public MessageRole() {
      * @return the corresponding MessageRole.
      */
     @Generated
-    @JsonCreator
     public static MessageRole fromString(String name) {
         return fromString(name, MessageRole.class);
     }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextAnnotation.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextAnnotation.java
index 3bf4aa52e5d0..7e4a7b545218 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextAnnotation.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextAnnotation.java
@@ -5,47 +5,35 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An abstract representation of an annotation to text thread message content.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "type",
-    defaultImpl = MessageTextAnnotation.class)
-@JsonTypeName("MessageTextAnnotation")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "file_citation", value = MessageTextFileCitationAnnotation.class),
-    @JsonSubTypes.Type(name = "file_path", value = MessageTextFilePathAnnotation.class) })
 @Immutable
-public class MessageTextAnnotation {
+public class MessageTextAnnotation implements JsonSerializable {
 
     /*
      * The textual content associated with this text annotation item.
      */
     @Generated
-    @JsonProperty(value = "text")
-    private String text;
+    private final String text;
 
     /*
      * The first text index associated with this text annotation.
      */
     @Generated
-    @JsonProperty(value = "start_index")
-    private int startIndex;
+    private final int startIndex;
 
     /*
      * The last text index associated with this text annotation.
      */
     @Generated
-    @JsonProperty(value = "end_index")
-    private int endIndex;
+    private final int endIndex;
 
     /**
      * Creates an instance of MessageTextAnnotation class.
@@ -55,9 +43,8 @@ public class MessageTextAnnotation {
      * @param endIndex the endIndex value to set.
      */
     @Generated
-    @JsonCreator
-    protected MessageTextAnnotation(@JsonProperty(value = "text") String text,
-        @JsonProperty(value = "start_index") int startIndex, @JsonProperty(value = "end_index") int endIndex) {
+    protected MessageTextAnnotation(String text, int startIndex, int endIndex) {
+        this.type = "MessageTextAnnotation";
         this.text = text;
         this.startIndex = startIndex;
         this.endIndex = endIndex;
@@ -92,4 +79,112 @@ public int getStartIndex() {
     public int getEndIndex() {
         return this.endIndex;
     }
+
+    /*
+     * The object type.
+     */
+    @Generated
+    private String type;
+
+    /**
+     * Get the type property: The object type.
+     *
+     * @return the type value.
+     */
+    @Generated
+    public String getType() {
+        return this.type;
+    }
+
+    /**
+     * Set the type property: The object type.
+     *
+     * @param type the type value to set.
+     * @return the MessageTextAnnotation object itself.
+     */
+    @Generated
+    MessageTextAnnotation setType(String type) {
+        this.type = type;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("text", this.text);
+        jsonWriter.writeIntField("start_index", this.startIndex);
+        jsonWriter.writeIntField("end_index", this.endIndex);
+        jsonWriter.writeStringField("type", this.type);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MessageTextAnnotation from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MessageTextAnnotation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the MessageTextAnnotation.
+     */
+    @Generated
+    public static MessageTextAnnotation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("type".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("file_citation".equals(discriminatorValue)) {
+                    return MessageTextFileCitationAnnotation.fromJson(readerToUse.reset());
+                } else if ("file_path".equals(discriminatorValue)) {
+                    return MessageTextFilePathAnnotation.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static MessageTextAnnotation fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String text = null;
+            int startIndex = 0;
+            int endIndex = 0;
+            String type = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("text".equals(fieldName)) {
+                    text = reader.getString();
+                } else if ("start_index".equals(fieldName)) {
+                    startIndex = reader.getInt();
+                } else if ("end_index".equals(fieldName)) {
+                    endIndex = reader.getInt();
+                } else if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            MessageTextAnnotation deserializedMessageTextAnnotation
+                = new MessageTextAnnotation(text, startIndex, endIndex);
+            deserializedMessageTextAnnotation.type = type;
+            return deserializedMessageTextAnnotation;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextContent.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextContent.java
index 6917b1767fb2..6a81058d5871 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextContent.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextContent.java
@@ -5,16 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * A representation of a textual item of thread message content.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("text")
 @Immutable
 public final class MessageTextContent extends MessageContent {
 
@@ -22,8 +20,7 @@ public final class MessageTextContent extends MessageContent {
      * The text and associated annotations for this thread message content item.
      */
     @Generated
-    @JsonProperty(value = "text")
-    private MessageTextDetails text;
+    private final MessageTextDetails text;
 
     /**
      * Creates an instance of MessageTextContent class.
@@ -31,8 +28,8 @@ public final class MessageTextContent extends MessageContent {
      * @param text the text value to set.
      */
     @Generated
-    @JsonCreator
-    private MessageTextContent(@JsonProperty(value = "text") MessageTextDetails text) {
+    private MessageTextContent(MessageTextDetails text) {
+        setType("text");
         this.text = text;
     }
 
@@ -45,4 +42,46 @@ private MessageTextContent(@JsonProperty(value = "text") MessageTextDetails text
     public MessageTextDetails getText() {
         return this.text;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", getType());
+        jsonWriter.writeJsonField("text", this.text);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MessageTextContent from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MessageTextContent if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the MessageTextContent.
+     */
+    @Generated
+    public static MessageTextContent fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String type = "text";
+            MessageTextDetails text = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else if ("text".equals(fieldName)) {
+                    text = MessageTextDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            MessageTextContent deserializedMessageTextContent = new MessageTextContent(text);
+            deserializedMessageTextContent.setType(type);
+            return deserializedMessageTextContent;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextDetails.java
index c3e502c1d2ef..2840d75e6fd8 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextDetails.java
@@ -5,29 +5,30 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The text and associated annotations for a single item of assistant thread message content.
  */
 @Immutable
-public final class MessageTextDetails {
+public final class MessageTextDetails implements JsonSerializable {
 
     /*
      * The text data.
      */
     @Generated
-    @JsonProperty(value = "value")
-    private String value;
+    private final String value;
 
     /*
      * A list of annotations associated with this text.
      */
     @Generated
-    @JsonProperty(value = "annotations")
-    private List annotations;
+    private final List annotations;
 
     /**
      * Creates an instance of MessageTextDetails class.
@@ -36,9 +37,7 @@ public final class MessageTextDetails {
      * @param annotations the annotations value to set.
      */
     @Generated
-    @JsonCreator
-    private MessageTextDetails(@JsonProperty(value = "value") String value,
-        @JsonProperty(value = "annotations") List annotations) {
+    private MessageTextDetails(String value, List annotations) {
         this.value = value;
         this.annotations = annotations;
     }
@@ -62,4 +61,44 @@ public String getValue() {
     public List getAnnotations() {
         return this.annotations;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("value", this.value);
+        jsonWriter.writeArrayField("annotations", this.annotations, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MessageTextDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MessageTextDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the MessageTextDetails.
+     */
+    @Generated
+    public static MessageTextDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String value = null;
+            List annotations = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("value".equals(fieldName)) {
+                    value = reader.getString();
+                } else if ("annotations".equals(fieldName)) {
+                    annotations = reader.readArray(reader1 -> MessageTextAnnotation.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new MessageTextDetails(value, annotations);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFileCitationAnnotation.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFileCitationAnnotation.java
index 98ffa93ad02e..690c919a7123 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFileCitationAnnotation.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFileCitationAnnotation.java
@@ -5,17 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
- * A citation within the message that points to a specific quote from a specific File associated with the assistant or
- * the message. Generated when the assistant uses the 'retrieval' tool to search files.
+ * A citation within the message that points to a specific quote from a specific File associated with the assistant or the message. Generated when the assistant uses the 'retrieval' tool to search files.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("file_citation")
 @Immutable
 public final class MessageTextFileCitationAnnotation extends MessageTextAnnotation {
 
@@ -24,8 +21,7 @@ public final class MessageTextFileCitationAnnotation extends MessageTextAnnotati
      * Generated when the assistant uses the "retrieval" tool to search files.
      */
     @Generated
-    @JsonProperty(value = "file_citation")
-    private MessageTextFileCitationDetails fileCitation;
+    private final MessageTextFileCitationDetails fileCitation;
 
     /**
      * Creates an instance of MessageTextFileCitationAnnotation class.
@@ -36,17 +32,15 @@ public final class MessageTextFileCitationAnnotation extends MessageTextAnnotati
      * @param fileCitation the fileCitation value to set.
      */
     @Generated
-    @JsonCreator
-    private MessageTextFileCitationAnnotation(@JsonProperty(value = "text") String text,
-        @JsonProperty(value = "start_index") int startIndex, @JsonProperty(value = "end_index") int endIndex,
-        @JsonProperty(value = "file_citation") MessageTextFileCitationDetails fileCitation) {
+    private MessageTextFileCitationAnnotation(String text, int startIndex, int endIndex,
+        MessageTextFileCitationDetails fileCitation) {
         super(text, startIndex, endIndex);
+        setType("file_citation");
         this.fileCitation = fileCitation;
     }
 
     /**
-     * Get the fileCitation property: A citation within the message that points to a specific quote from a specific
-     * file.
+     * Get the fileCitation property: A citation within the message that points to a specific quote from a specific file.
      * Generated when the assistant uses the "retrieval" tool to search files.
      *
      * @return the fileCitation value.
@@ -55,4 +49,59 @@ private MessageTextFileCitationAnnotation(@JsonProperty(value = "text") String t
     public MessageTextFileCitationDetails getFileCitation() {
         return this.fileCitation;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("text", getText());
+        jsonWriter.writeIntField("start_index", getStartIndex());
+        jsonWriter.writeIntField("end_index", getEndIndex());
+        jsonWriter.writeStringField("type", getType());
+        jsonWriter.writeJsonField("file_citation", this.fileCitation);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MessageTextFileCitationAnnotation from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MessageTextFileCitationAnnotation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the MessageTextFileCitationAnnotation.
+     */
+    @Generated
+    public static MessageTextFileCitationAnnotation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String text = null;
+            int startIndex = 0;
+            int endIndex = 0;
+            String type = "file_citation";
+            MessageTextFileCitationDetails fileCitation = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("text".equals(fieldName)) {
+                    text = reader.getString();
+                } else if ("start_index".equals(fieldName)) {
+                    startIndex = reader.getInt();
+                } else if ("end_index".equals(fieldName)) {
+                    endIndex = reader.getInt();
+                } else if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else if ("file_citation".equals(fieldName)) {
+                    fileCitation = MessageTextFileCitationDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            MessageTextFileCitationAnnotation deserializedMessageTextFileCitationAnnotation
+                = new MessageTextFileCitationAnnotation(text, startIndex, endIndex, fileCitation);
+            deserializedMessageTextFileCitationAnnotation.setType(type);
+            return deserializedMessageTextFileCitationAnnotation;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFileCitationDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFileCitationDetails.java
index e52e4a8e8c24..d5e8555d7673 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFileCitationDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFileCitationDetails.java
@@ -5,28 +5,29 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * A representation of a file-based text citation, as used in a file-based annotation of text thread message content.
  */
 @Immutable
-public final class MessageTextFileCitationDetails {
+public final class MessageTextFileCitationDetails implements JsonSerializable {
 
     /*
      * The ID of the file associated with this citation.
      */
     @Generated
-    @JsonProperty(value = "file_id")
-    private String fileId;
+    private final String fileId;
 
     /*
      * The specific quote cited in the associated file.
      */
     @Generated
-    @JsonProperty(value = "quote")
-    private String quote;
+    private final String quote;
 
     /**
      * Creates an instance of MessageTextFileCitationDetails class.
@@ -35,9 +36,7 @@ public final class MessageTextFileCitationDetails {
      * @param quote the quote value to set.
      */
     @Generated
-    @JsonCreator
-    private MessageTextFileCitationDetails(@JsonProperty(value = "file_id") String fileId,
-        @JsonProperty(value = "quote") String quote) {
+    private MessageTextFileCitationDetails(String fileId, String quote) {
         this.fileId = fileId;
         this.quote = quote;
     }
@@ -61,4 +60,44 @@ public String getFileId() {
     public String getQuote() {
         return this.quote;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("file_id", this.fileId);
+        jsonWriter.writeStringField("quote", this.quote);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MessageTextFileCitationDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MessageTextFileCitationDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the MessageTextFileCitationDetails.
+     */
+    @Generated
+    public static MessageTextFileCitationDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String fileId = null;
+            String quote = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("file_id".equals(fieldName)) {
+                    fileId = reader.getString();
+                } else if ("quote".equals(fieldName)) {
+                    quote = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new MessageTextFileCitationDetails(fileId, quote);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFilePathAnnotation.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFilePathAnnotation.java
index e5b375455519..68ef6d6b5e81 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFilePathAnnotation.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFilePathAnnotation.java
@@ -5,16 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * A citation within the message that points to a file located at a specific path.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("file_path")
 @Immutable
 public final class MessageTextFilePathAnnotation extends MessageTextAnnotation {
 
@@ -22,8 +20,7 @@ public final class MessageTextFilePathAnnotation extends MessageTextAnnotation {
      * A URL for the file that's generated when the assistant used the code_interpreter tool to generate a file.
      */
     @Generated
-    @JsonProperty(value = "file_path")
-    private MessageTextFilePathDetails filePath;
+    private final MessageTextFilePathDetails filePath;
 
     /**
      * Creates an instance of MessageTextFilePathAnnotation class.
@@ -34,17 +31,15 @@ public final class MessageTextFilePathAnnotation extends MessageTextAnnotation {
      * @param filePath the filePath value to set.
      */
     @Generated
-    @JsonCreator
-    private MessageTextFilePathAnnotation(@JsonProperty(value = "text") String text,
-        @JsonProperty(value = "start_index") int startIndex, @JsonProperty(value = "end_index") int endIndex,
-        @JsonProperty(value = "file_path") MessageTextFilePathDetails filePath) {
+    private MessageTextFilePathAnnotation(String text, int startIndex, int endIndex,
+        MessageTextFilePathDetails filePath) {
         super(text, startIndex, endIndex);
+        setType("file_path");
         this.filePath = filePath;
     }
 
     /**
-     * Get the filePath property: A URL for the file that's generated when the assistant used the code_interpreter tool
-     * to generate a file.
+     * Get the filePath property: A URL for the file that's generated when the assistant used the code_interpreter tool to generate a file.
      *
      * @return the filePath value.
      */
@@ -52,4 +47,59 @@ private MessageTextFilePathAnnotation(@JsonProperty(value = "text") String text,
     public MessageTextFilePathDetails getFilePath() {
         return this.filePath;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("text", getText());
+        jsonWriter.writeIntField("start_index", getStartIndex());
+        jsonWriter.writeIntField("end_index", getEndIndex());
+        jsonWriter.writeStringField("type", getType());
+        jsonWriter.writeJsonField("file_path", this.filePath);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MessageTextFilePathAnnotation from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MessageTextFilePathAnnotation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the MessageTextFilePathAnnotation.
+     */
+    @Generated
+    public static MessageTextFilePathAnnotation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String text = null;
+            int startIndex = 0;
+            int endIndex = 0;
+            String type = "file_path";
+            MessageTextFilePathDetails filePath = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("text".equals(fieldName)) {
+                    text = reader.getString();
+                } else if ("start_index".equals(fieldName)) {
+                    startIndex = reader.getInt();
+                } else if ("end_index".equals(fieldName)) {
+                    endIndex = reader.getInt();
+                } else if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else if ("file_path".equals(fieldName)) {
+                    filePath = MessageTextFilePathDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            MessageTextFilePathAnnotation deserializedMessageTextFilePathAnnotation
+                = new MessageTextFilePathAnnotation(text, startIndex, endIndex, filePath);
+            deserializedMessageTextFilePathAnnotation.setType(type);
+            return deserializedMessageTextFilePathAnnotation;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFilePathDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFilePathDetails.java
index c5860f3b9997..15cf5ff041da 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFilePathDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/MessageTextFilePathDetails.java
@@ -5,21 +5,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An encapsulation of an image file ID, as used by message image content.
  */
 @Immutable
-public final class MessageTextFilePathDetails {
+public final class MessageTextFilePathDetails implements JsonSerializable {
 
     /*
      * The ID of the specific file that the citation is from.
      */
     @Generated
-    @JsonProperty(value = "file_id")
-    private String fileId;
+    private final String fileId;
 
     /**
      * Creates an instance of MessageTextFilePathDetails class.
@@ -27,8 +29,7 @@ public final class MessageTextFilePathDetails {
      * @param fileId the fileId value to set.
      */
     @Generated
-    @JsonCreator
-    private MessageTextFilePathDetails(@JsonProperty(value = "file_id") String fileId) {
+    private MessageTextFilePathDetails(String fileId) {
         this.fileId = fileId;
     }
 
@@ -41,4 +42,40 @@ private MessageTextFilePathDetails(@JsonProperty(value = "file_id") String fileI
     public String getFileId() {
         return this.fileId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("file_id", this.fileId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MessageTextFilePathDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MessageTextFilePathDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the MessageTextFilePathDetails.
+     */
+    @Generated
+    public static MessageTextFilePathDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String fileId = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("file_id".equals(fieldName)) {
+                    fileId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new MessageTextFilePathDetails(fileId);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/OpenAIFile.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/OpenAIFile.java
index 56be5ed3bf71..b7dde669e0d0 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/OpenAIFile.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/OpenAIFile.java
@@ -5,8 +5,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.Instant;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
@@ -15,49 +18,43 @@
  * Represents an assistant that can call the model and use tools.
  */
 @Immutable
-public final class OpenAIFile {
+public final class OpenAIFile implements JsonSerializable {
 
     /*
      * The object type, which is always 'file'.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "file";
+    private final String object = "file";
 
     /*
      * The identifier, which can be referenced in API endpoints.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * The size of the file, in bytes.
      */
     @Generated
-    @JsonProperty(value = "bytes")
-    private int bytes;
+    private final int bytes;
 
     /*
      * The name of the file.
      */
     @Generated
-    @JsonProperty(value = "filename")
-    private String filename;
+    private final String filename;
 
     /*
      * The Unix timestamp, in seconds, representing when this object was created.
      */
     @Generated
-    @JsonProperty(value = "created_at")
-    private long createdAt;
+    private final long createdAt;
 
     /*
      * The intended purpose of a file.
      */
     @Generated
-    @JsonProperty(value = "purpose")
-    private FilePurpose purpose;
+    private final FilePurpose purpose;
 
     /**
      * Creates an instance of OpenAIFile class.
@@ -77,14 +74,6 @@ private OpenAIFile(String id, int bytes, String filename, OffsetDateTime created
         this.purpose = purpose;
     }
 
-    @Generated
-    @JsonCreator
-    private OpenAIFile(@JsonProperty(value = "id") String id, @JsonProperty(value = "bytes") int bytes,
-        @JsonProperty(value = "filename") String filename, @JsonProperty(value = "created_at") long createdAt,
-        @JsonProperty(value = "purpose") FilePurpose purpose) {
-        this(id, bytes, filename, OffsetDateTime.ofInstant(Instant.ofEpochSecond(createdAt), ZoneOffset.UTC), purpose);
-    }
-
     /**
      * Get the object property: The object type, which is always 'file'.
      *
@@ -144,4 +133,57 @@ public OffsetDateTime getCreatedAt() {
     public FilePurpose getPurpose() {
         return this.purpose;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeIntField("bytes", this.bytes);
+        jsonWriter.writeStringField("filename", this.filename);
+        jsonWriter.writeLongField("created_at", this.createdAt);
+        jsonWriter.writeStringField("purpose", this.purpose == null ? null : this.purpose.toString());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of OpenAIFile from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of OpenAIFile if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the OpenAIFile.
+     */
+    @Generated
+    public static OpenAIFile fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            int bytes = 0;
+            String filename = null;
+            OffsetDateTime createdAt = null;
+            FilePurpose purpose = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("bytes".equals(fieldName)) {
+                    bytes = reader.getInt();
+                } else if ("filename".equals(fieldName)) {
+                    filename = reader.getString();
+                } else if ("created_at".equals(fieldName)) {
+                    createdAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC);
+                } else if ("purpose".equals(fieldName)) {
+                    purpose = FilePurpose.fromString(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new OpenAIFile(id, bytes, filename, createdAt, purpose);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredAction.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredAction.java
index c84cea0711c7..69e0376cbc9b 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredAction.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredAction.java
@@ -5,27 +5,113 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An abstract representation of a required action for an assistant thread run to continue.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "type",
-    defaultImpl = RequiredAction.class)
-@JsonTypeName("RequiredAction")
-@JsonSubTypes({ @JsonSubTypes.Type(name = "submit_tool_outputs", value = SubmitToolOutputsAction.class) })
 @Immutable
-public class RequiredAction {
+public class RequiredAction implements JsonSerializable {
 
     /**
      * Creates an instance of RequiredAction class.
      */
     @Generated
     protected RequiredAction() {
+        this.type = "RequiredAction";
+    }
+
+    /*
+     * The object type.
+     */
+    @Generated
+    private String type;
+
+    /**
+     * Get the type property: The object type.
+     *
+     * @return the type value.
+     */
+    @Generated
+    public String getType() {
+        return this.type;
+    }
+
+    /**
+     * Set the type property: The object type.
+     *
+     * @param type the type value to set.
+     * @return the RequiredAction object itself.
+     */
+    @Generated
+    RequiredAction setType(String type) {
+        this.type = type;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", this.type);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RequiredAction from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RequiredAction if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the RequiredAction.
+     */
+    @Generated
+    public static RequiredAction fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("type".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("submit_tool_outputs".equals(discriminatorValue)) {
+                    return SubmitToolOutputsAction.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static RequiredAction fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RequiredAction deserializedRequiredAction = new RequiredAction();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    deserializedRequiredAction.type = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedRequiredAction;
+        });
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredFunctionToolCall.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredFunctionToolCall.java
index 23170f111e1a..badf93d52621 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredFunctionToolCall.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredFunctionToolCall.java
@@ -5,16 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * A representation of a requested call to a function tool, needed by the model to continue evaluation of a run.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("function")
 @Immutable
 public final class RequiredFunctionToolCall extends RequiredToolCall {
 
@@ -22,12 +20,10 @@ public final class RequiredFunctionToolCall extends RequiredToolCall {
      * Detailed information about the function to be executed by the tool that includes name and arguments.
      */
     @Generated
-    @JsonProperty(value = "function")
-    private RequiredFunctionToolCallDetails function;
+    private final RequiredFunctionToolCallDetails function;
 
     /**
-     * Get the function property: Detailed information about the function to be executed by the tool that includes name
-     * and arguments.
+     * Get the function property: Detailed information about the function to be executed by the tool that includes name and arguments.
      *
      * @return the function value.
      */
@@ -43,10 +39,55 @@ public RequiredFunctionToolCallDetails getFunction() {
      * @param function the function value to set.
      */
     @Generated
-    @JsonCreator
-    private RequiredFunctionToolCall(@JsonProperty(value = "id") String id,
-        @JsonProperty(value = "function") RequiredFunctionToolCallDetails function) {
+    private RequiredFunctionToolCall(String id, RequiredFunctionToolCallDetails function) {
         super(id);
+        setType("function");
         this.function = function;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeStringField("type", getType());
+        jsonWriter.writeJsonField("function", this.function);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RequiredFunctionToolCall from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RequiredFunctionToolCall if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RequiredFunctionToolCall.
+     */
+    @Generated
+    public static RequiredFunctionToolCall fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String type = "function";
+            RequiredFunctionToolCallDetails function = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else if ("function".equals(fieldName)) {
+                    function = RequiredFunctionToolCallDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            RequiredFunctionToolCall deserializedRequiredFunctionToolCall = new RequiredFunctionToolCall(id, function);
+            deserializedRequiredFunctionToolCall.setType(type);
+            return deserializedRequiredFunctionToolCall;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredFunctionToolCallDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredFunctionToolCallDetails.java
index ff0f43b13097..d11118279124 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredFunctionToolCallDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredFunctionToolCallDetails.java
@@ -5,30 +5,29 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
- * The detailed information for a function invocation, as provided by a required action invoking a function tool, that
- * includes the name of and arguments to the function.
+ * The detailed information for a function invocation, as provided by a required action invoking a function tool, that includes the name of and arguments to the function.
  */
 @Immutable
-public final class RequiredFunctionToolCallDetails {
+public final class RequiredFunctionToolCallDetails implements JsonSerializable {
 
     /*
      * The name of the function.
      */
     @Generated
-    @JsonProperty(value = "name")
-    private String name;
+    private final String name;
 
     /*
-     * The arguments to use when invoking the named function, as provided by the model. Arguments are presented as a
-     * JSON document that should be validated and parsed for evaluation.
+     * The arguments to use when invoking the named function, as provided by the model. Arguments are presented as a JSON document that should be validated and parsed for evaluation.
      */
     @Generated
-    @JsonProperty(value = "arguments")
-    private String arguments;
+    private final String arguments;
 
     /**
      * Creates an instance of RequiredFunctionToolCallDetails class.
@@ -37,9 +36,7 @@ public final class RequiredFunctionToolCallDetails {
      * @param arguments the arguments value to set.
      */
     @Generated
-    @JsonCreator
-    private RequiredFunctionToolCallDetails(@JsonProperty(value = "name") String name,
-        @JsonProperty(value = "arguments") String arguments) {
+    private RequiredFunctionToolCallDetails(String name, String arguments) {
         this.name = name;
         this.arguments = arguments;
     }
@@ -55,8 +52,7 @@ public String getName() {
     }
 
     /**
-     * Get the arguments property: The arguments to use when invoking the named function, as provided by the model.
-     * Arguments are presented as a JSON document that should be validated and parsed for evaluation.
+     * Get the arguments property: The arguments to use when invoking the named function, as provided by the model. Arguments are presented as a JSON document that should be validated and parsed for evaluation.
      *
      * @return the arguments value.
      */
@@ -64,4 +60,44 @@ public String getName() {
     public String getArguments() {
         return this.arguments;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("arguments", this.arguments);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RequiredFunctionToolCallDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RequiredFunctionToolCallDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RequiredFunctionToolCallDetails.
+     */
+    @Generated
+    public static RequiredFunctionToolCallDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String name = null;
+            String arguments = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("arguments".equals(fieldName)) {
+                    arguments = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new RequiredFunctionToolCallDetails(name, arguments);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredToolCall.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredToolCall.java
index fedcb5b79c6e..103b9c58ae5c 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredToolCall.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RequiredToolCall.java
@@ -5,31 +5,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An abstract representation a a tool invocation needed by the model to continue a run.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "type",
-    defaultImpl = RequiredToolCall.class)
-@JsonTypeName("RequiredToolCall")
-@JsonSubTypes({ @JsonSubTypes.Type(name = "function", value = RequiredFunctionToolCall.class) })
 @Immutable
-public class RequiredToolCall {
+public class RequiredToolCall implements JsonSerializable {
 
     /*
      * The ID of the tool call. This ID must be referenced when submitting tool outputs.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /**
      * Creates an instance of RequiredToolCall class.
@@ -37,8 +29,8 @@ public class RequiredToolCall {
      * @param id the id value to set.
      */
     @Generated
-    @JsonCreator
-    protected RequiredToolCall(@JsonProperty(value = "id") String id) {
+    protected RequiredToolCall(String id) {
+        this.type = "RequiredToolCall";
         this.id = id;
     }
 
@@ -51,4 +43,101 @@ protected RequiredToolCall(@JsonProperty(value = "id") String id) {
     public String getId() {
         return this.id;
     }
+
+    /*
+     * The object type for the required tool call.
+     */
+    @Generated
+    private String type;
+
+    /**
+     * Get the type property: The object type for the required tool call.
+     *
+     * @return the type value.
+     */
+    @Generated
+    public String getType() {
+        return this.type;
+    }
+
+    /**
+     * Set the type property: The object type for the required tool call.
+     *
+     * @param type the type value to set.
+     * @return the RequiredToolCall object itself.
+     */
+    @Generated
+    RequiredToolCall setType(String type) {
+        this.type = type;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("type", this.type);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RequiredToolCall from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RequiredToolCall if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RequiredToolCall.
+     */
+    @Generated
+    public static RequiredToolCall fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("type".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("function".equals(discriminatorValue)) {
+                    return RequiredFunctionToolCall.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static RequiredToolCall fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String type = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            RequiredToolCall deserializedRequiredToolCall = new RequiredToolCall(id);
+            deserializedRequiredToolCall.type = type;
+            return deserializedRequiredToolCall;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RetrievalToolDefinition.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RetrievalToolDefinition.java
index 9b88b184db92..7442e09b3d57 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RetrievalToolDefinition.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RetrievalToolDefinition.java
@@ -5,14 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The input definition information for a retrieval tool as used to configure an assistant.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("retrieval")
 @Immutable
 public final class RetrievalToolDefinition extends ToolDefinition {
 
@@ -21,5 +21,41 @@ public final class RetrievalToolDefinition extends ToolDefinition {
      */
     @Generated
     public RetrievalToolDefinition() {
+        setType("retrieval");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", getType());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RetrievalToolDefinition from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RetrievalToolDefinition if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the RetrievalToolDefinition.
+     */
+    @Generated
+    public static RetrievalToolDefinition fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RetrievalToolDefinition deserializedRetrievalToolDefinition = new RetrievalToolDefinition();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    deserializedRetrievalToolDefinition.setType(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedRetrievalToolDefinition;
+        });
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunError.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunError.java
index 4b8764b55458..278159ac29b4 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunError.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunError.java
@@ -5,28 +5,29 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The details of an error as encountered by an assistant thread run.
  */
 @Immutable
-public final class RunError {
+public final class RunError implements JsonSerializable {
 
     /*
      * The status for the error.
      */
     @Generated
-    @JsonProperty(value = "code")
-    private String code;
+    private final String code;
 
     /*
      * The human-readable text associated with the error.
      */
     @Generated
-    @JsonProperty(value = "message")
-    private String message;
+    private final String message;
 
     /**
      * Creates an instance of RunError class.
@@ -35,8 +36,7 @@ public final class RunError {
      * @param message the message value to set.
      */
     @Generated
-    @JsonCreator
-    private RunError(@JsonProperty(value = "code") String code, @JsonProperty(value = "message") String message) {
+    private RunError(String code, String message) {
         this.code = code;
         this.message = message;
     }
@@ -60,4 +60,44 @@ public String getCode() {
     public String getMessage() {
         return this.message;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("code", this.code);
+        jsonWriter.writeStringField("message", this.message);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunError from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunError if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunError.
+     */
+    @Generated
+    public static RunError fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String code = null;
+            String message = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("code".equals(fieldName)) {
+                    code = reader.getString();
+                } else if ("message".equals(fieldName)) {
+                    message = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new RunError(code, message);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStatus.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStatus.java
index 65a9b88e45df..667824f56ede 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStatus.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStatus.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -78,7 +77,6 @@ public RunStatus() {
      * @return the corresponding RunStatus.
      */
     @Generated
-    @JsonCreator
     public static RunStatus fromString(String name) {
         return fromString(name, RunStatus.class);
     }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStep.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStep.java
index d1cedb29fc04..c65a22d8b5a0 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStep.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStep.java
@@ -5,125 +5,112 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.Instant;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
 import java.util.Map;
 
 /**
  * Detailed information about a single step of an assistant thread run.
  */
 @Immutable
-public final class RunStep {
+public final class RunStep implements JsonSerializable {
 
     /*
      * The identifier, which can be referenced in API endpoints.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * The object type, which is always 'thread.run.step'.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "thread.run.step";
+    private final String object = "thread.run.step";
 
     /*
      * The type of run step, which can be either message_creation or tool_calls.
      */
     @Generated
-    @JsonProperty(value = "type")
-    private RunStepType type;
+    private final RunStepType type;
 
     /*
      * The ID of the assistant associated with the run step.
      */
     @Generated
-    @JsonProperty(value = "assistant_id")
-    private String assistantId;
+    private final String assistantId;
 
     /*
      * The ID of the thread that was run.
      */
     @Generated
-    @JsonProperty(value = "thread_id")
-    private String threadId;
+    private final String threadId;
 
     /*
      * The ID of the run that this run step is a part of.
      */
     @Generated
-    @JsonProperty(value = "run_id")
-    private String runId;
+    private final String runId;
 
     /*
      * The status of this run step.
      */
     @Generated
-    @JsonProperty(value = "status")
-    private RunStepStatus status;
+    private final RunStepStatus status;
 
     /*
      * The details for this run step.
      */
     @Generated
-    @JsonProperty(value = "step_details")
-    private RunStepDetails stepDetails;
+    private final RunStepDetails stepDetails;
 
     /*
      * If applicable, information about the last error encountered by this run step.
      */
     @Generated
-    @JsonProperty(value = "last_error")
-    private RunStepError lastError;
+    private final RunStepError lastError;
 
     /*
      * The Unix timestamp, in seconds, representing when this object was created.
      */
     @Generated
-    @JsonProperty(value = "created_at")
-    private long createdAt;
+    private final long createdAt;
 
     /*
      * The Unix timestamp, in seconds, representing when this item expired.
      */
     @Generated
-    @JsonProperty(value = "expired_at")
-    private OffsetDateTime expiredAt;
+    private final OffsetDateTime expiredAt;
 
     /*
      * The Unix timestamp, in seconds, representing when this completed.
      */
     @Generated
-    @JsonProperty(value = "completed_at")
-    private OffsetDateTime completedAt;
+    private final OffsetDateTime completedAt;
 
     /*
      * The Unix timestamp, in seconds, representing when this was cancelled.
      */
     @Generated
-    @JsonProperty(value = "cancelled_at")
-    private OffsetDateTime cancelledAt;
+    private final OffsetDateTime cancelledAt;
 
     /*
      * The Unix timestamp, in seconds, representing when this failed.
      */
     @Generated
-    @JsonProperty(value = "failed_at")
-    private OffsetDateTime failedAt;
+    private final OffsetDateTime failedAt;
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
-    private Map metadata;
+    private final Map metadata;
 
     /**
      * Get the id property: The identifier, which can be referenced in API endpoints.
@@ -266,9 +253,7 @@ public OffsetDateTime getFailedAt() {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -316,20 +301,97 @@ private RunStep(String id, RunStepType type, String assistantId, String threadId
         this.metadata = metadata;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString());
+        jsonWriter.writeStringField("assistant_id", this.assistantId);
+        jsonWriter.writeStringField("thread_id", this.threadId);
+        jsonWriter.writeStringField("run_id", this.runId);
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        jsonWriter.writeJsonField("step_details", this.stepDetails);
+        jsonWriter.writeJsonField("last_error", this.lastError);
+        jsonWriter.writeLongField("created_at", this.createdAt);
+        jsonWriter.writeStringField("expired_at",
+            this.expiredAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.expiredAt));
+        jsonWriter.writeStringField("completed_at",
+            this.completedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.completedAt));
+        jsonWriter.writeStringField("cancelled_at",
+            this.cancelledAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.cancelledAt));
+        jsonWriter.writeStringField("failed_at",
+            this.failedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.failedAt));
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStep from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStep if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStep.
+     */
     @Generated
-    @JsonCreator
-    private RunStep(@JsonProperty(value = "id") String id, @JsonProperty(value = "type") RunStepType type,
-        @JsonProperty(value = "assistant_id") String assistantId, @JsonProperty(value = "thread_id") String threadId,
-        @JsonProperty(value = "run_id") String runId, @JsonProperty(value = "status") RunStepStatus status,
-        @JsonProperty(value = "step_details") RunStepDetails stepDetails,
-        @JsonProperty(value = "last_error") RunStepError lastError, @JsonProperty(value = "created_at") long createdAt,
-        @JsonProperty(value = "expired_at") OffsetDateTime expiredAt,
-        @JsonProperty(value = "completed_at") OffsetDateTime completedAt,
-        @JsonProperty(value = "cancelled_at") OffsetDateTime cancelledAt,
-        @JsonProperty(value = "failed_at") OffsetDateTime failedAt,
-        @JsonProperty(value = "metadata") Map metadata) {
-        this(id, type, assistantId, threadId, runId, status, stepDetails, lastError,
-            OffsetDateTime.ofInstant(Instant.ofEpochSecond(createdAt), ZoneOffset.UTC), expiredAt, completedAt,
-            cancelledAt, failedAt, metadata);
+    public static RunStep fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            RunStepType type = null;
+            String assistantId = null;
+            String threadId = null;
+            String runId = null;
+            RunStepStatus status = null;
+            RunStepDetails stepDetails = null;
+            RunStepError lastError = null;
+            OffsetDateTime createdAt = null;
+            OffsetDateTime expiredAt = null;
+            OffsetDateTime completedAt = null;
+            OffsetDateTime cancelledAt = null;
+            OffsetDateTime failedAt = null;
+            Map metadata = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    type = RunStepType.fromString(reader.getString());
+                } else if ("assistant_id".equals(fieldName)) {
+                    assistantId = reader.getString();
+                } else if ("thread_id".equals(fieldName)) {
+                    threadId = reader.getString();
+                } else if ("run_id".equals(fieldName)) {
+                    runId = reader.getString();
+                } else if ("status".equals(fieldName)) {
+                    status = RunStepStatus.fromString(reader.getString());
+                } else if ("step_details".equals(fieldName)) {
+                    stepDetails = RunStepDetails.fromJson(reader);
+                } else if ("last_error".equals(fieldName)) {
+                    lastError = RunStepError.fromJson(reader);
+                } else if ("created_at".equals(fieldName)) {
+                    createdAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC);
+                } else if ("expired_at".equals(fieldName)) {
+                    expiredAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("completed_at".equals(fieldName)) {
+                    completedAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("cancelled_at".equals(fieldName)) {
+                    cancelledAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("failed_at".equals(fieldName)) {
+                    failedAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("metadata".equals(fieldName)) {
+                    metadata = reader.readMap(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new RunStep(id, type, assistantId, threadId, runId, status, stepDetails, lastError, createdAt,
+                expiredAt, completedAt, cancelledAt, failedAt, metadata);
+        });
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterImageOutput.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterImageOutput.java
index 3eb97cb2a55c..c2424b2bb058 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterImageOutput.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterImageOutput.java
@@ -5,16 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * A representation of an image output emitted by a code interpreter tool in response to a tool call by the model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("image")
 @Immutable
 public final class RunStepCodeInterpreterImageOutput extends RunStepCodeInterpreterToolCallOutput {
 
@@ -22,8 +20,7 @@ public final class RunStepCodeInterpreterImageOutput extends RunStepCodeInterpre
      * Referential information for the image associated with this output.
      */
     @Generated
-    @JsonProperty(value = "image")
-    private RunStepCodeInterpreterImageReference image;
+    private final RunStepCodeInterpreterImageReference image;
 
     /**
      * Creates an instance of RunStepCodeInterpreterImageOutput class.
@@ -31,9 +28,8 @@ public final class RunStepCodeInterpreterImageOutput extends RunStepCodeInterpre
      * @param image the image value to set.
      */
     @Generated
-    @JsonCreator
-    private RunStepCodeInterpreterImageOutput(
-        @JsonProperty(value = "image") RunStepCodeInterpreterImageReference image) {
+    private RunStepCodeInterpreterImageOutput(RunStepCodeInterpreterImageReference image) {
+        setType("image");
         this.image = image;
     }
 
@@ -46,4 +42,47 @@ private RunStepCodeInterpreterImageOutput(
     public RunStepCodeInterpreterImageReference getImage() {
         return this.image;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", getType());
+        jsonWriter.writeJsonField("image", this.image);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepCodeInterpreterImageOutput from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepCodeInterpreterImageOutput if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepCodeInterpreterImageOutput.
+     */
+    @Generated
+    public static RunStepCodeInterpreterImageOutput fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String type = "image";
+            RunStepCodeInterpreterImageReference image = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else if ("image".equals(fieldName)) {
+                    image = RunStepCodeInterpreterImageReference.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            RunStepCodeInterpreterImageOutput deserializedRunStepCodeInterpreterImageOutput
+                = new RunStepCodeInterpreterImageOutput(image);
+            deserializedRunStepCodeInterpreterImageOutput.setType(type);
+            return deserializedRunStepCodeInterpreterImageOutput;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterImageReference.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterImageReference.java
index 1ff0c79a6c3f..6e3af7f036a3 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterImageReference.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterImageReference.java
@@ -5,21 +5,24 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An image reference emitted by a code interpreter tool in response to a tool call by the model.
  */
 @Immutable
-public final class RunStepCodeInterpreterImageReference {
+public final class RunStepCodeInterpreterImageReference
+    implements JsonSerializable {
 
     /*
      * The ID of the file associated with this image.
      */
     @Generated
-    @JsonProperty(value = "file_id")
-    private String fileId;
+    private final String fileId;
 
     /**
      * Creates an instance of RunStepCodeInterpreterImageReference class.
@@ -27,8 +30,7 @@ public final class RunStepCodeInterpreterImageReference {
      * @param fileId the fileId value to set.
      */
     @Generated
-    @JsonCreator
-    private RunStepCodeInterpreterImageReference(@JsonProperty(value = "file_id") String fileId) {
+    private RunStepCodeInterpreterImageReference(String fileId) {
         this.fileId = fileId;
     }
 
@@ -41,4 +43,40 @@ private RunStepCodeInterpreterImageReference(@JsonProperty(value = "file_id") St
     public String getFileId() {
         return this.fileId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("file_id", this.fileId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepCodeInterpreterImageReference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepCodeInterpreterImageReference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepCodeInterpreterImageReference.
+     */
+    @Generated
+    public static RunStepCodeInterpreterImageReference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String fileId = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("file_id".equals(fieldName)) {
+                    fileId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new RunStepCodeInterpreterImageReference(fileId);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterLogOutput.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterLogOutput.java
index 2a2892499f13..ffde4709d09a 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterLogOutput.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterLogOutput.java
@@ -5,16 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * A representation of a log output emitted by a code interpreter tool in response to a tool call by the model.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("logs")
 @Immutable
 public final class RunStepCodeInterpreterLogOutput extends RunStepCodeInterpreterToolCallOutput {
 
@@ -22,8 +20,7 @@ public final class RunStepCodeInterpreterLogOutput extends RunStepCodeInterprete
      * The serialized log output emitted by the code interpreter.
      */
     @Generated
-    @JsonProperty(value = "logs")
-    private String logs;
+    private final String logs;
 
     /**
      * Creates an instance of RunStepCodeInterpreterLogOutput class.
@@ -31,8 +28,8 @@ public final class RunStepCodeInterpreterLogOutput extends RunStepCodeInterprete
      * @param logs the logs value to set.
      */
     @Generated
-    @JsonCreator
-    private RunStepCodeInterpreterLogOutput(@JsonProperty(value = "logs") String logs) {
+    private RunStepCodeInterpreterLogOutput(String logs) {
+        setType("logs");
         this.logs = logs;
     }
 
@@ -45,4 +42,47 @@ private RunStepCodeInterpreterLogOutput(@JsonProperty(value = "logs") String log
     public String getLogs() {
         return this.logs;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", getType());
+        jsonWriter.writeStringField("logs", this.logs);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepCodeInterpreterLogOutput from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepCodeInterpreterLogOutput if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepCodeInterpreterLogOutput.
+     */
+    @Generated
+    public static RunStepCodeInterpreterLogOutput fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String type = "logs";
+            String logs = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else if ("logs".equals(fieldName)) {
+                    logs = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            RunStepCodeInterpreterLogOutput deserializedRunStepCodeInterpreterLogOutput
+                = new RunStepCodeInterpreterLogOutput(logs);
+            deserializedRunStepCodeInterpreterLogOutput.setType(type);
+            return deserializedRunStepCodeInterpreterLogOutput;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterToolCall.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterToolCall.java
index 029489ee5a9d..c50bfb0aea2f 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterToolCall.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterToolCall.java
@@ -5,17 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * A record of a call to a code interpreter tool, issued by the model in evaluation of a defined tool, that
  * represents inputs and outputs consumed and emitted by the code interpreter.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("code_interpreter")
 @Immutable
 public final class RunStepCodeInterpreterToolCall extends RunStepToolCall {
 
@@ -23,8 +21,7 @@ public final class RunStepCodeInterpreterToolCall extends RunStepToolCall {
      * The details of the tool call to the code interpreter tool.
      */
     @Generated
-    @JsonProperty(value = "code_interpreter")
-    private RunStepCodeInterpreterToolCallDetails codeInterpreter;
+    private final RunStepCodeInterpreterToolCallDetails codeInterpreter;
 
     /**
      * Creates an instance of RunStepCodeInterpreterToolCall class.
@@ -33,10 +30,9 @@ public final class RunStepCodeInterpreterToolCall extends RunStepToolCall {
      * @param codeInterpreter the codeInterpreter value to set.
      */
     @Generated
-    @JsonCreator
-    private RunStepCodeInterpreterToolCall(@JsonProperty(value = "id") String id,
-        @JsonProperty(value = "code_interpreter") RunStepCodeInterpreterToolCallDetails codeInterpreter) {
+    private RunStepCodeInterpreterToolCall(String id, RunStepCodeInterpreterToolCallDetails codeInterpreter) {
         super(id);
+        setType("code_interpreter");
         this.codeInterpreter = codeInterpreter;
     }
 
@@ -49,4 +45,51 @@ private RunStepCodeInterpreterToolCall(@JsonProperty(value = "id") String id,
     public RunStepCodeInterpreterToolCallDetails getCodeInterpreter() {
         return this.codeInterpreter;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeStringField("type", getType());
+        jsonWriter.writeJsonField("code_interpreter", this.codeInterpreter);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepCodeInterpreterToolCall from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepCodeInterpreterToolCall if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepCodeInterpreterToolCall.
+     */
+    @Generated
+    public static RunStepCodeInterpreterToolCall fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String type = "code_interpreter";
+            RunStepCodeInterpreterToolCallDetails codeInterpreter = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else if ("code_interpreter".equals(fieldName)) {
+                    codeInterpreter = RunStepCodeInterpreterToolCallDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            RunStepCodeInterpreterToolCall deserializedRunStepCodeInterpreterToolCall
+                = new RunStepCodeInterpreterToolCall(id, codeInterpreter);
+            deserializedRunStepCodeInterpreterToolCall.setType(type);
+            return deserializedRunStepCodeInterpreterToolCall;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterToolCallDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterToolCallDetails.java
index 09b66fb11458..a0c8bdda1b20 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterToolCallDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterToolCallDetails.java
@@ -5,29 +5,31 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The detailed information about a code interpreter invocation by the model.
  */
 @Immutable
-public final class RunStepCodeInterpreterToolCallDetails {
+public final class RunStepCodeInterpreterToolCallDetails
+    implements JsonSerializable {
 
     /*
      * The input provided by the model to the code interpreter tool.
      */
     @Generated
-    @JsonProperty(value = "input")
-    private String input;
+    private final String input;
 
     /*
      * The outputs produced by the code interpreter tool back to the model in response to the tool call.
      */
     @Generated
-    @JsonProperty(value = "outputs")
-    private List outputs;
+    private final List outputs;
 
     /**
      * Creates an instance of RunStepCodeInterpreterToolCallDetails class.
@@ -36,9 +38,7 @@ public final class RunStepCodeInterpreterToolCallDetails {
      * @param outputs the outputs value to set.
      */
     @Generated
-    @JsonCreator
-    private RunStepCodeInterpreterToolCallDetails(@JsonProperty(value = "input") String input,
-        @JsonProperty(value = "outputs") List outputs) {
+    private RunStepCodeInterpreterToolCallDetails(String input, List outputs) {
         this.input = input;
         this.outputs = outputs;
     }
@@ -54,8 +54,7 @@ public String getInput() {
     }
 
     /**
-     * Get the outputs property: The outputs produced by the code interpreter tool back to the model in response to the
-     * tool call.
+     * Get the outputs property: The outputs produced by the code interpreter tool back to the model in response to the tool call.
      *
      * @return the outputs value.
      */
@@ -63,4 +62,44 @@ public String getInput() {
     public List getOutputs() {
         return this.outputs;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("input", this.input);
+        jsonWriter.writeArrayField("outputs", this.outputs, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepCodeInterpreterToolCallDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepCodeInterpreterToolCallDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepCodeInterpreterToolCallDetails.
+     */
+    @Generated
+    public static RunStepCodeInterpreterToolCallDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String input = null;
+            List outputs = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("input".equals(fieldName)) {
+                    input = reader.getString();
+                } else if ("outputs".equals(fieldName)) {
+                    outputs = reader.readArray(reader1 -> RunStepCodeInterpreterToolCallOutput.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new RunStepCodeInterpreterToolCallDetails(input, outputs);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterToolCallOutput.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterToolCallOutput.java
index 8e1758e91c2a..3de347e7cf12 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterToolCallOutput.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepCodeInterpreterToolCallOutput.java
@@ -5,29 +5,116 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An abstract representation of an emitted output from a code interpreter tool.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "type",
-    defaultImpl = RunStepCodeInterpreterToolCallOutput.class)
-@JsonTypeName("RunStepCodeInterpreterToolCallOutput")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "logs", value = RunStepCodeInterpreterLogOutput.class),
-    @JsonSubTypes.Type(name = "image", value = RunStepCodeInterpreterImageOutput.class) })
 @Immutable
-public class RunStepCodeInterpreterToolCallOutput {
+public class RunStepCodeInterpreterToolCallOutput implements JsonSerializable {
 
     /**
      * Creates an instance of RunStepCodeInterpreterToolCallOutput class.
      */
     @Generated
     protected RunStepCodeInterpreterToolCallOutput() {
+        this.type = "RunStepCodeInterpreterToolCallOutput";
+    }
+
+    /*
+     * The object type.
+     */
+    @Generated
+    private String type;
+
+    /**
+     * Get the type property: The object type.
+     *
+     * @return the type value.
+     */
+    @Generated
+    public String getType() {
+        return this.type;
+    }
+
+    /**
+     * Set the type property: The object type.
+     *
+     * @param type the type value to set.
+     * @return the RunStepCodeInterpreterToolCallOutput object itself.
+     */
+    @Generated
+    RunStepCodeInterpreterToolCallOutput setType(String type) {
+        this.type = type;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", this.type);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepCodeInterpreterToolCallOutput from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepCodeInterpreterToolCallOutput if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the RunStepCodeInterpreterToolCallOutput.
+     */
+    @Generated
+    public static RunStepCodeInterpreterToolCallOutput fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("type".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("logs".equals(discriminatorValue)) {
+                    return RunStepCodeInterpreterLogOutput.fromJson(readerToUse.reset());
+                } else if ("image".equals(discriminatorValue)) {
+                    return RunStepCodeInterpreterImageOutput.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static RunStepCodeInterpreterToolCallOutput fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RunStepCodeInterpreterToolCallOutput deserializedRunStepCodeInterpreterToolCallOutput
+                = new RunStepCodeInterpreterToolCallOutput();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    deserializedRunStepCodeInterpreterToolCallOutput.type = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedRunStepCodeInterpreterToolCallOutput;
+        });
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepDetails.java
index 7f8afd4eb35c..e63a3110a169 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepDetails.java
@@ -5,29 +5,115 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An abstract representation of the details for a run step.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "type",
-    defaultImpl = RunStepDetails.class)
-@JsonTypeName("RunStepDetails")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "message_creation", value = RunStepMessageCreationDetails.class),
-    @JsonSubTypes.Type(name = "tool_calls", value = RunStepToolCallDetails.class) })
 @Immutable
-public class RunStepDetails {
+public class RunStepDetails implements JsonSerializable {
 
     /**
      * Creates an instance of RunStepDetails class.
      */
     @Generated
     protected RunStepDetails() {
+        this.type = RunStepType.fromString("RunStepDetails");
+    }
+
+    /*
+     * The object type.
+     */
+    @Generated
+    private RunStepType type;
+
+    /**
+     * Get the type property: The object type.
+     *
+     * @return the type value.
+     */
+    @Generated
+    public RunStepType getType() {
+        return this.type;
+    }
+
+    /**
+     * Set the type property: The object type.
+     *
+     * @param type the type value to set.
+     * @return the RunStepDetails object itself.
+     */
+    @Generated
+    RunStepDetails setType(RunStepType type) {
+        this.type = type;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the RunStepDetails.
+     */
+    @Generated
+    public static RunStepDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("type".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("message_creation".equals(discriminatorValue)) {
+                    return RunStepMessageCreationDetails.fromJson(readerToUse.reset());
+                } else if ("tool_calls".equals(discriminatorValue)) {
+                    return RunStepToolCallDetails.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static RunStepDetails fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RunStepDetails deserializedRunStepDetails = new RunStepDetails();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    deserializedRunStepDetails.type = RunStepType.fromString(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedRunStepDetails;
+        });
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepError.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepError.java
index 2d7d17813764..573ed0b639cf 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepError.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepError.java
@@ -5,28 +5,29 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The error information associated with a failed run step.
  */
 @Immutable
-public final class RunStepError {
+public final class RunStepError implements JsonSerializable {
 
     /*
      * The error code for this error.
      */
     @Generated
-    @JsonProperty(value = "code")
-    private RunStepErrorCode code;
+    private final RunStepErrorCode code;
 
     /*
      * The human-readable text associated with this error.
      */
     @Generated
-    @JsonProperty(value = "message")
-    private String message;
+    private final String message;
 
     /**
      * Creates an instance of RunStepError class.
@@ -35,9 +36,7 @@ public final class RunStepError {
      * @param message the message value to set.
      */
     @Generated
-    @JsonCreator
-    private RunStepError(@JsonProperty(value = "code") RunStepErrorCode code,
-        @JsonProperty(value = "message") String message) {
+    private RunStepError(RunStepErrorCode code, String message) {
         this.code = code;
         this.message = message;
     }
@@ -61,4 +60,44 @@ public RunStepErrorCode getCode() {
     public String getMessage() {
         return this.message;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("code", this.code == null ? null : this.code.toString());
+        jsonWriter.writeStringField("message", this.message);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepError from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepError if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepError.
+     */
+    @Generated
+    public static RunStepError fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RunStepErrorCode code = null;
+            String message = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("code".equals(fieldName)) {
+                    code = RunStepErrorCode.fromString(reader.getString());
+                } else if ("message".equals(fieldName)) {
+                    message = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new RunStepError(code, message);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepErrorCode.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepErrorCode.java
index 98ef99d6fb07..c86d9208e87c 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepErrorCode.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepErrorCode.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public RunStepErrorCode() {
      * @return the corresponding RunStepErrorCode.
      */
     @Generated
-    @JsonCreator
     public static RunStepErrorCode fromString(String name) {
         return fromString(name, RunStepErrorCode.class);
     }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepFunctionToolCall.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepFunctionToolCall.java
index 45fbc3d2ffd8..50ec399de34b 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepFunctionToolCall.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepFunctionToolCall.java
@@ -5,18 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
- * A record of a call to a function tool, issued by the model in evaluation of a defined tool, that represents the
- * inputs
+ * A record of a call to a function tool, issued by the model in evaluation of a defined tool, that represents the inputs
  * and output consumed and emitted by the specified function.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("function")
 @Immutable
 public final class RunStepFunctionToolCall extends RunStepToolCall {
 
@@ -24,8 +21,7 @@ public final class RunStepFunctionToolCall extends RunStepToolCall {
      * The detailed information about the function called by the model.
      */
     @Generated
-    @JsonProperty(value = "function")
-    private RunStepFunctionToolCallDetails function;
+    private final RunStepFunctionToolCallDetails function;
 
     /**
      * Creates an instance of RunStepFunctionToolCall class.
@@ -34,10 +30,9 @@ public final class RunStepFunctionToolCall extends RunStepToolCall {
      * @param function the function value to set.
      */
     @Generated
-    @JsonCreator
-    private RunStepFunctionToolCall(@JsonProperty(value = "id") String id,
-        @JsonProperty(value = "function") RunStepFunctionToolCallDetails function) {
+    private RunStepFunctionToolCall(String id, RunStepFunctionToolCallDetails function) {
         super(id);
+        setType("function");
         this.function = function;
     }
 
@@ -50,4 +45,50 @@ private RunStepFunctionToolCall(@JsonProperty(value = "id") String id,
     public RunStepFunctionToolCallDetails getFunction() {
         return this.function;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeStringField("type", getType());
+        jsonWriter.writeJsonField("function", this.function);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepFunctionToolCall from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepFunctionToolCall if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepFunctionToolCall.
+     */
+    @Generated
+    public static RunStepFunctionToolCall fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String type = "function";
+            RunStepFunctionToolCallDetails function = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else if ("function".equals(fieldName)) {
+                    function = RunStepFunctionToolCallDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            RunStepFunctionToolCall deserializedRunStepFunctionToolCall = new RunStepFunctionToolCall(id, function);
+            deserializedRunStepFunctionToolCall.setType(type);
+            return deserializedRunStepFunctionToolCall;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepFunctionToolCallDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepFunctionToolCallDetails.java
index 7069cb9aa674..8d89d7c44a5a 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepFunctionToolCallDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepFunctionToolCallDetails.java
@@ -5,36 +5,35 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The detailed information about the function called by the model.
  */
 @Immutable
-public final class RunStepFunctionToolCallDetails {
+public final class RunStepFunctionToolCallDetails implements JsonSerializable {
 
     /*
      * The name of the function.
      */
     @Generated
-    @JsonProperty(value = "name")
-    private String name;
+    private final String name;
 
     /*
      * The arguments that the model requires are provided to the named function.
      */
     @Generated
-    @JsonProperty(value = "arguments")
-    private String arguments;
+    private final String arguments;
 
     /*
-     * The output of the function, only populated for function calls that have already have had their outputs
-     * submitted.
+     * The output of the function, only populated for function calls that have already have had their outputs submitted.
      */
     @Generated
-    @JsonProperty(value = "output")
-    private String output;
+    private final String output;
 
     /**
      * Creates an instance of RunStepFunctionToolCallDetails class.
@@ -44,9 +43,7 @@ public final class RunStepFunctionToolCallDetails {
      * @param output the output value to set.
      */
     @Generated
-    @JsonCreator
-    private RunStepFunctionToolCallDetails(@JsonProperty(value = "name") String name,
-        @JsonProperty(value = "arguments") String arguments, @JsonProperty(value = "output") String output) {
+    private RunStepFunctionToolCallDetails(String name, String arguments, String output) {
         this.name = name;
         this.arguments = arguments;
         this.output = output;
@@ -73,8 +70,7 @@ public String getArguments() {
     }
 
     /**
-     * Get the output property: The output of the function, only populated for function calls that have already have
-     * had their outputs submitted.
+     * Get the output property: The output of the function, only populated for function calls that have already have had their outputs submitted.
      *
      * @return the output value.
      */
@@ -82,4 +78,48 @@ public String getArguments() {
     public String getOutput() {
         return this.output;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("arguments", this.arguments);
+        jsonWriter.writeStringField("output", this.output);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepFunctionToolCallDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepFunctionToolCallDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepFunctionToolCallDetails.
+     */
+    @Generated
+    public static RunStepFunctionToolCallDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String name = null;
+            String arguments = null;
+            String output = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("name".equals(fieldName)) {
+                    name = reader.getString();
+                } else if ("arguments".equals(fieldName)) {
+                    arguments = reader.getString();
+                } else if ("output".equals(fieldName)) {
+                    output = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new RunStepFunctionToolCallDetails(name, arguments, output);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepMessageCreationDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepMessageCreationDetails.java
index 3a4a266ceb17..5658c014deef 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepMessageCreationDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepMessageCreationDetails.java
@@ -5,16 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The detailed information associated with a message creation run step.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("message_creation")
 @Immutable
 public final class RunStepMessageCreationDetails extends RunStepDetails {
 
@@ -22,8 +20,7 @@ public final class RunStepMessageCreationDetails extends RunStepDetails {
      * Information about the message creation associated with this run step.
      */
     @Generated
-    @JsonProperty(value = "message_creation")
-    private RunStepMessageCreationReference messageCreation;
+    private final RunStepMessageCreationReference messageCreation;
 
     /**
      * Creates an instance of RunStepMessageCreationDetails class.
@@ -31,9 +28,8 @@ public final class RunStepMessageCreationDetails extends RunStepDetails {
      * @param messageCreation the messageCreation value to set.
      */
     @Generated
-    @JsonCreator
-    private RunStepMessageCreationDetails(
-        @JsonProperty(value = "message_creation") RunStepMessageCreationReference messageCreation) {
+    private RunStepMessageCreationDetails(RunStepMessageCreationReference messageCreation) {
+        setType(RunStepType.MESSAGE_CREATION);
         this.messageCreation = messageCreation;
     }
 
@@ -46,4 +42,47 @@ private RunStepMessageCreationDetails(
     public RunStepMessageCreationReference getMessageCreation() {
         return this.messageCreation;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", getType() == null ? null : getType().toString());
+        jsonWriter.writeJsonField("message_creation", this.messageCreation);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepMessageCreationDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepMessageCreationDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepMessageCreationDetails.
+     */
+    @Generated
+    public static RunStepMessageCreationDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RunStepType type = RunStepType.MESSAGE_CREATION;
+            RunStepMessageCreationReference messageCreation = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    type = RunStepType.fromString(reader.getString());
+                } else if ("message_creation".equals(fieldName)) {
+                    messageCreation = RunStepMessageCreationReference.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            RunStepMessageCreationDetails deserializedRunStepMessageCreationDetails
+                = new RunStepMessageCreationDetails(messageCreation);
+            deserializedRunStepMessageCreationDetails.setType(type);
+            return deserializedRunStepMessageCreationDetails;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepMessageCreationReference.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepMessageCreationReference.java
index da521ae08df7..ec450da586a7 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepMessageCreationReference.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepMessageCreationReference.java
@@ -5,21 +5,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The details of a message created as a part of a run step.
  */
 @Immutable
-public final class RunStepMessageCreationReference {
+public final class RunStepMessageCreationReference implements JsonSerializable {
 
     /*
      * The ID of the message created by this run step.
      */
     @Generated
-    @JsonProperty(value = "message_id")
-    private String messageId;
+    private final String messageId;
 
     /**
      * Creates an instance of RunStepMessageCreationReference class.
@@ -27,8 +29,7 @@ public final class RunStepMessageCreationReference {
      * @param messageId the messageId value to set.
      */
     @Generated
-    @JsonCreator
-    private RunStepMessageCreationReference(@JsonProperty(value = "message_id") String messageId) {
+    private RunStepMessageCreationReference(String messageId) {
         this.messageId = messageId;
     }
 
@@ -41,4 +42,40 @@ private RunStepMessageCreationReference(@JsonProperty(value = "message_id") Stri
     public String getMessageId() {
         return this.messageId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("message_id", this.messageId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepMessageCreationReference from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepMessageCreationReference if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepMessageCreationReference.
+     */
+    @Generated
+    public static RunStepMessageCreationReference fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String messageId = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("message_id".equals(fieldName)) {
+                    messageId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new RunStepMessageCreationReference(messageId);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepRetrievalToolCall.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepRetrievalToolCall.java
index aa8cdc2bdb31..4ff7d1d7dcb2 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepRetrievalToolCall.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepRetrievalToolCall.java
@@ -5,18 +5,16 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * A record of a call to a retrieval tool, issued by the model in evaluation of a defined tool, that represents
  * executed retrieval actions.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("retrieval")
 @Immutable
 public final class RunStepRetrievalToolCall extends RunStepToolCall {
 
@@ -24,8 +22,7 @@ public final class RunStepRetrievalToolCall extends RunStepToolCall {
      * The key/value pairs produced by the retrieval tool.
      */
     @Generated
-    @JsonProperty(value = "retrieval")
-    private Map retrieval;
+    private final Map retrieval;
 
     /**
      * Creates an instance of RunStepRetrievalToolCall class.
@@ -34,10 +31,9 @@ public final class RunStepRetrievalToolCall extends RunStepToolCall {
      * @param retrieval the retrieval value to set.
      */
     @Generated
-    @JsonCreator
-    private RunStepRetrievalToolCall(@JsonProperty(value = "id") String id,
-        @JsonProperty(value = "retrieval") Map retrieval) {
+    private RunStepRetrievalToolCall(String id, Map retrieval) {
         super(id);
+        setType("retrieval");
         this.retrieval = retrieval;
     }
 
@@ -50,4 +46,50 @@ private RunStepRetrievalToolCall(@JsonProperty(value = "id") String id,
     public Map getRetrieval() {
         return this.retrieval;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", getId());
+        jsonWriter.writeStringField("type", getType());
+        jsonWriter.writeMapField("retrieval", this.retrieval, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepRetrievalToolCall from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepRetrievalToolCall if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepRetrievalToolCall.
+     */
+    @Generated
+    public static RunStepRetrievalToolCall fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String type = "retrieval";
+            Map retrieval = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else if ("retrieval".equals(fieldName)) {
+                    retrieval = reader.readMap(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            RunStepRetrievalToolCall deserializedRunStepRetrievalToolCall = new RunStepRetrievalToolCall(id, retrieval);
+            deserializedRunStepRetrievalToolCall.setType(type);
+            return deserializedRunStepRetrievalToolCall;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepStatus.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepStatus.java
index c03872658a51..c5ff81c22680 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepStatus.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepStatus.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -60,7 +59,6 @@ public RunStepStatus() {
      * @return the corresponding RunStepStatus.
      */
     @Generated
-    @JsonCreator
     public static RunStepStatus fromString(String name) {
         return fromString(name, RunStepStatus.class);
     }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepToolCall.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepToolCall.java
index d2db6fc2088b..67dea210d5c1 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepToolCall.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepToolCall.java
@@ -5,34 +5,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An abstract representation of a detailed tool call as recorded within a run step for an existing run.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "type",
-    defaultImpl = RunStepToolCall.class)
-@JsonTypeName("RunStepToolCall")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "code_interpreter", value = RunStepCodeInterpreterToolCall.class),
-    @JsonSubTypes.Type(name = "retrieval", value = RunStepRetrievalToolCall.class),
-    @JsonSubTypes.Type(name = "function", value = RunStepFunctionToolCall.class) })
 @Immutable
-public class RunStepToolCall {
+public class RunStepToolCall implements JsonSerializable {
 
     /*
      * The ID of the tool call. This ID must be referenced when you submit tool outputs.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /**
      * Creates an instance of RunStepToolCall class.
@@ -40,8 +29,8 @@ public class RunStepToolCall {
      * @param id the id value to set.
      */
     @Generated
-    @JsonCreator
-    protected RunStepToolCall(@JsonProperty(value = "id") String id) {
+    protected RunStepToolCall(String id) {
+        this.type = "RunStepToolCall";
         this.id = id;
     }
 
@@ -54,4 +43,105 @@ protected RunStepToolCall(@JsonProperty(value = "id") String id) {
     public String getId() {
         return this.id;
     }
+
+    /*
+     * The object type.
+     */
+    @Generated
+    private String type;
+
+    /**
+     * Get the type property: The object type.
+     *
+     * @return the type value.
+     */
+    @Generated
+    public String getType() {
+        return this.type;
+    }
+
+    /**
+     * Set the type property: The object type.
+     *
+     * @param type the type value to set.
+     * @return the RunStepToolCall object itself.
+     */
+    @Generated
+    RunStepToolCall setType(String type) {
+        this.type = type;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("type", this.type);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepToolCall from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepToolCall if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepToolCall.
+     */
+    @Generated
+    public static RunStepToolCall fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("type".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("code_interpreter".equals(discriminatorValue)) {
+                    return RunStepCodeInterpreterToolCall.fromJson(readerToUse.reset());
+                } else if ("retrieval".equals(discriminatorValue)) {
+                    return RunStepRetrievalToolCall.fromJson(readerToUse.reset());
+                } else if ("function".equals(discriminatorValue)) {
+                    return RunStepFunctionToolCall.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static RunStepToolCall fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String type = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            RunStepToolCall deserializedRunStepToolCall = new RunStepToolCall(id);
+            deserializedRunStepToolCall.type = type;
+            return deserializedRunStepToolCall;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepToolCallDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepToolCallDetails.java
index af4967f62c69..1f2d56859e4d 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepToolCallDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepToolCallDetails.java
@@ -5,17 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The detailed information associated with a run step calling tools.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("tool_calls")
 @Immutable
 public final class RunStepToolCallDetails extends RunStepDetails {
 
@@ -23,8 +21,7 @@ public final class RunStepToolCallDetails extends RunStepDetails {
      * A list of tool call details for this run step.
      */
     @Generated
-    @JsonProperty(value = "tool_calls")
-    private List toolCalls;
+    private final List toolCalls;
 
     /**
      * Creates an instance of RunStepToolCallDetails class.
@@ -32,8 +29,8 @@ public final class RunStepToolCallDetails extends RunStepDetails {
      * @param toolCalls the toolCalls value to set.
      */
     @Generated
-    @JsonCreator
-    private RunStepToolCallDetails(@JsonProperty(value = "tool_calls") List toolCalls) {
+    private RunStepToolCallDetails(List toolCalls) {
+        setType(RunStepType.TOOL_CALLS);
         this.toolCalls = toolCalls;
     }
 
@@ -46,4 +43,46 @@ private RunStepToolCallDetails(@JsonProperty(value = "tool_calls") List getToolCalls() {
         return this.toolCalls;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", getType() == null ? null : getType().toString());
+        jsonWriter.writeArrayField("tool_calls", this.toolCalls, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of RunStepToolCallDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of RunStepToolCallDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the RunStepToolCallDetails.
+     */
+    @Generated
+    public static RunStepToolCallDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            RunStepType type = RunStepType.TOOL_CALLS;
+            List toolCalls = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    type = RunStepType.fromString(reader.getString());
+                } else if ("tool_calls".equals(fieldName)) {
+                    toolCalls = reader.readArray(reader1 -> RunStepToolCall.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            RunStepToolCallDetails deserializedRunStepToolCallDetails = new RunStepToolCallDetails(toolCalls);
+            deserializedRunStepToolCallDetails.setType(type);
+            return deserializedRunStepToolCallDetails;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepType.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepType.java
index d02d3b72277a..4bfac1749c6f 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepType.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/RunStepType.java
@@ -5,7 +5,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public RunStepType() {
      * @return the corresponding RunStepType.
      */
     @Generated
-    @JsonCreator
     public static RunStepType fromString(String name) {
         return fromString(name, RunStepType.class);
     }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/SubmitToolOutputsAction.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/SubmitToolOutputsAction.java
index e76bb061e1d8..a671d64b47c3 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/SubmitToolOutputsAction.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/SubmitToolOutputsAction.java
@@ -5,16 +5,14 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The details for required tool calls that must be submitted for an assistant thread run to continue.
  */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
-@JsonTypeName("submit_tool_outputs")
 @Immutable
 public final class SubmitToolOutputsAction extends RequiredAction {
 
@@ -22,8 +20,7 @@ public final class SubmitToolOutputsAction extends RequiredAction {
      * The details describing tools that should be called to submit tool outputs.
      */
     @Generated
-    @JsonProperty(value = "submit_tool_outputs")
-    private SubmitToolOutputsDetails submitToolOutputs;
+    private final SubmitToolOutputsDetails submitToolOutputs;
 
     /**
      * Creates an instance of SubmitToolOutputsAction class.
@@ -31,9 +28,8 @@ public final class SubmitToolOutputsAction extends RequiredAction {
      * @param submitToolOutputs the submitToolOutputs value to set.
      */
     @Generated
-    @JsonCreator
-    private SubmitToolOutputsAction(
-        @JsonProperty(value = "submit_tool_outputs") SubmitToolOutputsDetails submitToolOutputs) {
+    private SubmitToolOutputsAction(SubmitToolOutputsDetails submitToolOutputs) {
+        setType("submit_tool_outputs");
         this.submitToolOutputs = submitToolOutputs;
     }
 
@@ -46,4 +42,47 @@ private SubmitToolOutputsAction(
     public SubmitToolOutputsDetails getSubmitToolOutputs() {
         return this.submitToolOutputs;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", getType());
+        jsonWriter.writeJsonField("submit_tool_outputs", this.submitToolOutputs);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SubmitToolOutputsAction from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SubmitToolOutputsAction if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the SubmitToolOutputsAction.
+     */
+    @Generated
+    public static SubmitToolOutputsAction fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String type = "submit_tool_outputs";
+            SubmitToolOutputsDetails submitToolOutputs = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    type = reader.getString();
+                } else if ("submit_tool_outputs".equals(fieldName)) {
+                    submitToolOutputs = SubmitToolOutputsDetails.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            SubmitToolOutputsAction deserializedSubmitToolOutputsAction
+                = new SubmitToolOutputsAction(submitToolOutputs);
+            deserializedSubmitToolOutputsAction.setType(type);
+            return deserializedSubmitToolOutputsAction;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/SubmitToolOutputsDetails.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/SubmitToolOutputsDetails.java
index 23267734f0dc..aee15cf580cf 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/SubmitToolOutputsDetails.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/SubmitToolOutputsDetails.java
@@ -5,22 +5,24 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The details describing tools that should be called to submit tool outputs.
  */
 @Immutable
-public final class SubmitToolOutputsDetails {
+public final class SubmitToolOutputsDetails implements JsonSerializable {
 
     /*
      * The list of tool calls that must be resolved for the assistant thread run to continue.
      */
     @Generated
-    @JsonProperty(value = "tool_calls")
-    private List toolCalls;
+    private final List toolCalls;
 
     /**
      * Creates an instance of SubmitToolOutputsDetails class.
@@ -28,14 +30,12 @@ public final class SubmitToolOutputsDetails {
      * @param toolCalls the toolCalls value to set.
      */
     @Generated
-    @JsonCreator
-    private SubmitToolOutputsDetails(@JsonProperty(value = "tool_calls") List toolCalls) {
+    private SubmitToolOutputsDetails(List toolCalls) {
         this.toolCalls = toolCalls;
     }
 
     /**
-     * Get the toolCalls property: The list of tool calls that must be resolved for the assistant thread run to
-     * continue.
+     * Get the toolCalls property: The list of tool calls that must be resolved for the assistant thread run to continue.
      *
      * @return the toolCalls value.
      */
@@ -43,4 +43,40 @@ private SubmitToolOutputsDetails(@JsonProperty(value = "tool_calls") List getToolCalls() {
         return this.toolCalls;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("tool_calls", this.toolCalls, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SubmitToolOutputsDetails from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SubmitToolOutputsDetails if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the SubmitToolOutputsDetails.
+     */
+    @Generated
+    public static SubmitToolOutputsDetails fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            List toolCalls = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("tool_calls".equals(fieldName)) {
+                    toolCalls = reader.readArray(reader1 -> RequiredToolCall.fromJson(reader1));
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new SubmitToolOutputsDetails(toolCalls);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadDeletionStatus.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadDeletionStatus.java
index 632773780809..5775a0566ac0 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadDeletionStatus.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadDeletionStatus.java
@@ -5,35 +5,35 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The status of a thread deletion operation.
  */
 @Immutable
-public final class ThreadDeletionStatus {
+public final class ThreadDeletionStatus implements JsonSerializable {
 
     /*
      * The ID of the resource specified for deletion.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * A value indicating whether deletion was successful.
      */
     @Generated
-    @JsonProperty(value = "deleted")
-    private boolean deleted;
+    private final boolean deleted;
 
     /*
      * The object type, which is always 'thread.deleted'.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "thread.deleted";
+    private final String object = "thread.deleted";
 
     /**
      * Creates an instance of ThreadDeletionStatus class.
@@ -42,9 +42,7 @@ public final class ThreadDeletionStatus {
      * @param deleted the deleted value to set.
      */
     @Generated
-    @JsonCreator
-    private ThreadDeletionStatus(@JsonProperty(value = "id") String id,
-        @JsonProperty(value = "deleted") boolean deleted) {
+    private ThreadDeletionStatus(String id, boolean deleted) {
         this.id = id;
         this.deleted = deleted;
     }
@@ -78,4 +76,45 @@ public boolean isDeleted() {
     public String getObject() {
         return this.object;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeBooleanField("deleted", this.deleted);
+        jsonWriter.writeStringField("object", this.object);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ThreadDeletionStatus from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ThreadDeletionStatus if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ThreadDeletionStatus.
+     */
+    @Generated
+    public static ThreadDeletionStatus fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            boolean deleted = false;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("deleted".equals(fieldName)) {
+                    deleted = reader.getBoolean();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return new ThreadDeletionStatus(id, deleted);
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadInitializationMessage.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadInitializationMessage.java
index f900475a6af9..aa7b93989f23 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadInitializationMessage.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadInitializationMessage.java
@@ -5,8 +5,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,39 +17,31 @@
  * A single message within an assistant thread, as provided during that thread's creation for its initial state.
  */
 @Fluent
-public final class ThreadInitializationMessage {
+public final class ThreadInitializationMessage implements JsonSerializable {
 
     /*
-     * The role associated with the assistant thread message. Currently, only 'user' is supported when providing
-     * initial messages to a new thread.
+     * The role associated with the assistant thread message. Currently, only 'user' is supported when providing initial messages to a new thread.
      */
     @Generated
-    @JsonProperty(value = "role")
-    private MessageRole role;
+    private final MessageRole role;
 
     /*
-     * The textual content of the initial message. Currently, robust input including images and annotated text may only
-     * be provided via a separate call to the create message API.
+     * The textual content of the initial message. Currently, robust input including images and annotated text may only be provided via a separate call to the create message API.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private String content;
+    private final String content;
 
     /*
      * A list of file IDs that the assistant should use. Useful for tools like retrieval and code_interpreter that can
      * access files.
      */
     @Generated
-    @JsonProperty(value = "file_ids")
     private List fileIds;
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
     private Map metadata;
 
     /**
@@ -56,16 +51,13 @@ public final class ThreadInitializationMessage {
      * @param content the content value to set.
      */
     @Generated
-    @JsonCreator
-    public ThreadInitializationMessage(@JsonProperty(value = "role") MessageRole role,
-        @JsonProperty(value = "content") String content) {
+    public ThreadInitializationMessage(MessageRole role, String content) {
         this.role = role;
         this.content = content;
     }
 
     /**
-     * Get the role property: The role associated with the assistant thread message. Currently, only 'user' is
-     * supported when providing initial messages to a new thread.
+     * Get the role property: The role associated with the assistant thread message. Currently, only 'user' is supported when providing initial messages to a new thread.
      *
      * @return the role value.
      */
@@ -75,8 +67,7 @@ public MessageRole getRole() {
     }
 
     /**
-     * Get the content property: The textual content of the initial message. Currently, robust input including images
-     * and annotated text may only be provided via a separate call to the create message API.
+     * Get the content property: The textual content of the initial message. Currently, robust input including images and annotated text may only be provided via a separate call to the create message API.
      *
      * @return the content value.
      */
@@ -86,8 +77,7 @@ public String getContent() {
     }
 
     /**
-     * Get the fileIds property: A list of file IDs that the assistant should use. Useful for tools like retrieval and
-     * code_interpreter that can
+     * Get the fileIds property: A list of file IDs that the assistant should use. Useful for tools like retrieval and code_interpreter that can
      * access files.
      *
      * @return the fileIds value.
@@ -98,8 +88,7 @@ public List getFileIds() {
     }
 
     /**
-     * Set the fileIds property: A list of file IDs that the assistant should use. Useful for tools like retrieval and
-     * code_interpreter that can
+     * Set the fileIds property: A list of file IDs that the assistant should use. Useful for tools like retrieval and code_interpreter that can
      * access files.
      *
      * @param fileIds the fileIds value to set.
@@ -112,9 +101,7 @@ public ThreadInitializationMessage setFileIds(List fileIds) {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -124,9 +111,7 @@ public Map getMetadata() {
     }
 
     /**
-     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @param metadata the metadata value to set.
      * @return the ThreadInitializationMessage object itself.
@@ -136,4 +121,56 @@ public ThreadInitializationMessage setMetadata(Map metadata) {
         this.metadata = metadata;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("role", this.role == null ? null : this.role.toString());
+        jsonWriter.writeStringField("content", this.content);
+        jsonWriter.writeArrayField("file_ids", this.fileIds, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ThreadInitializationMessage from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ThreadInitializationMessage if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ThreadInitializationMessage.
+     */
+    @Generated
+    public static ThreadInitializationMessage fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            MessageRole role = null;
+            String content = null;
+            List fileIds = null;
+            Map metadata = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("role".equals(fieldName)) {
+                    role = MessageRole.fromString(reader.getString());
+                } else if ("content".equals(fieldName)) {
+                    content = reader.getString();
+                } else if ("file_ids".equals(fieldName)) {
+                    fileIds = reader.readArray(reader1 -> reader1.getString());
+                } else if ("metadata".equals(fieldName)) {
+                    metadata = reader.readMap(reader1 -> reader1.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            ThreadInitializationMessage deserializedThreadInitializationMessage
+                = new ThreadInitializationMessage(role, content);
+            deserializedThreadInitializationMessage.fileIds = fileIds;
+            deserializedThreadInitializationMessage.metadata = metadata;
+            return deserializedThreadInitializationMessage;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadMessage.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadMessage.java
index 2ff667744cea..1f6de8960944 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadMessage.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadMessage.java
@@ -5,8 +5,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.Instant;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
@@ -17,62 +20,54 @@
  * A single, existing message within an assistant thread.
  */
 @Immutable
-public final class ThreadMessage {
+public final class ThreadMessage implements JsonSerializable {
 
     /*
      * The identifier, which can be referenced in API endpoints.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * The object type, which is always 'thread.message'.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "thread.message";
+    private final String object = "thread.message";
 
     /*
      * The Unix timestamp, in seconds, representing when this object was created.
      */
     @Generated
-    @JsonProperty(value = "created_at")
-    private long createdAt;
+    private final long createdAt;
 
     /*
      * The ID of the thread that this message belongs to.
      */
     @Generated
-    @JsonProperty(value = "thread_id")
-    private String threadId;
+    private final String threadId;
 
     /*
      * The role associated with the assistant thread message.
      */
     @Generated
-    @JsonProperty(value = "role")
-    private MessageRole role;
+    private final MessageRole role;
 
     /*
      * The list of content items associated with the assistant thread message.
      */
     @Generated
-    @JsonProperty(value = "content")
-    private List content;
+    private final List content;
 
     /*
      * If applicable, the ID of the assistant that authored this message.
      */
     @Generated
-    @JsonProperty(value = "assistant_id")
     private String assistantId;
 
     /*
      * If applicable, the ID of the run associated with the authoring of this message.
      */
     @Generated
-    @JsonProperty(value = "run_id")
     private String runId;
 
     /*
@@ -80,17 +75,13 @@ public final class ThreadMessage {
      * access files.
      */
     @Generated
-    @JsonProperty(value = "file_ids")
-    private List fileIds;
+    private final List fileIds;
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
-    private Map metadata;
+    private final Map metadata;
 
     /**
      * Get the id property: The identifier, which can be referenced in API endpoints.
@@ -173,8 +164,7 @@ public String getRunId() {
     }
 
     /**
-     * Get the fileIds property: A list of file IDs that the assistant should use. Useful for tools like retrieval and
-     * code_interpreter that can
+     * Get the fileIds property: A list of file IDs that the assistant should use. Useful for tools like retrieval and code_interpreter that can
      * access files.
      *
      * @return the fileIds value.
@@ -185,9 +175,7 @@ public List getFileIds() {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -219,14 +207,76 @@ private ThreadMessage(String id, OffsetDateTime createdAt, String threadId, Mess
         this.metadata = metadata;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeLongField("created_at", this.createdAt);
+        jsonWriter.writeStringField("thread_id", this.threadId);
+        jsonWriter.writeStringField("role", this.role == null ? null : this.role.toString());
+        jsonWriter.writeArrayField("content", this.content, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("file_ids", this.fileIds, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("assistant_id", this.assistantId);
+        jsonWriter.writeStringField("run_id", this.runId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ThreadMessage from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ThreadMessage if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ThreadMessage.
+     */
     @Generated
-    @JsonCreator
-    private ThreadMessage(@JsonProperty(value = "id") String id, @JsonProperty(value = "created_at") long createdAt,
-        @JsonProperty(value = "thread_id") String threadId, @JsonProperty(value = "role") MessageRole role,
-        @JsonProperty(value = "content") List content,
-        @JsonProperty(value = "file_ids") List fileIds,
-        @JsonProperty(value = "metadata") Map metadata) {
-        this(id, OffsetDateTime.ofInstant(Instant.ofEpochSecond(createdAt), ZoneOffset.UTC), threadId, role, content,
-            fileIds, metadata);
+    public static ThreadMessage fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            OffsetDateTime createdAt = null;
+            String threadId = null;
+            MessageRole role = null;
+            List content = null;
+            List fileIds = null;
+            Map metadata = null;
+            String assistantId = null;
+            String runId = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("created_at".equals(fieldName)) {
+                    createdAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC);
+                } else if ("thread_id".equals(fieldName)) {
+                    threadId = reader.getString();
+                } else if ("role".equals(fieldName)) {
+                    role = MessageRole.fromString(reader.getString());
+                } else if ("content".equals(fieldName)) {
+                    content = reader.readArray(reader1 -> MessageContent.fromJson(reader1));
+                } else if ("file_ids".equals(fieldName)) {
+                    fileIds = reader.readArray(reader1 -> reader1.getString());
+                } else if ("metadata".equals(fieldName)) {
+                    metadata = reader.readMap(reader1 -> reader1.getString());
+                } else if ("assistant_id".equals(fieldName)) {
+                    assistantId = reader.getString();
+                } else if ("run_id".equals(fieldName)) {
+                    runId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            ThreadMessage deserializedThreadMessage
+                = new ThreadMessage(id, createdAt, threadId, role, content, fileIds, metadata);
+            deserializedThreadMessage.assistantId = assistantId;
+            deserializedThreadMessage.runId = runId;
+            return deserializedThreadMessage;
+        });
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadRun.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadRun.java
index 94588ac510db..fbe1ea1b989c 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadRun.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ThreadRun.java
@@ -5,11 +5,15 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.time.Instant;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
 
@@ -17,135 +21,115 @@
  * Data representing a single evaluation run of an assistant thread.
  */
 @Immutable
-public final class ThreadRun {
+public final class ThreadRun implements JsonSerializable {
 
     /*
      * The identifier, which can be referenced in API endpoints.
      */
     @Generated
-    @JsonProperty(value = "id")
-    private String id;
+    private final String id;
 
     /*
      * The object type, which is always 'thread.run'.
      */
     @Generated
-    @JsonProperty(value = "object")
-    private String object = "thread.run";
+    private final String object = "thread.run";
 
     /*
      * The ID of the thread associated with this run.
      */
     @Generated
-    @JsonProperty(value = "thread_id")
-    private String threadId;
+    private final String threadId;
 
     /*
      * The ID of the assistant associated with the thread this run was performed against.
      */
     @Generated
-    @JsonProperty(value = "assistant_id")
-    private String assistantId;
+    private final String assistantId;
 
     /*
      * The status of the assistant thread run.
      */
     @Generated
-    @JsonProperty(value = "status")
-    private RunStatus status;
+    private final RunStatus status;
 
     /*
      * The details of the action required for the assistant thread run to continue.
      */
     @Generated
-    @JsonProperty(value = "required_action")
     private RequiredAction requiredAction;
 
     /*
      * The last error, if any, encountered by this assistant thread run.
      */
     @Generated
-    @JsonProperty(value = "last_error")
-    private RunError lastError;
+    private final RunError lastError;
 
     /*
      * The ID of the model to use.
      */
     @Generated
-    @JsonProperty(value = "model")
-    private String model;
+    private final String model;
 
     /*
      * The overridden system instructions used for this assistant thread run.
      */
     @Generated
-    @JsonProperty(value = "instructions")
-    private String instructions;
+    private final String instructions;
 
     /*
      * The overridden enabled tools used for this assistant thread run.
      */
     @Generated
-    @JsonProperty(value = "tools")
-    private List tools;
+    private final List tools;
 
     /*
      * A list of attached file IDs, ordered by creation date in ascending order.
      */
     @Generated
-    @JsonProperty(value = "file_ids")
-    private List fileIds;
+    private final List fileIds;
 
     /*
      * The Unix timestamp, in seconds, representing when this object was created.
      */
     @Generated
-    @JsonProperty(value = "created_at")
-    private long createdAt;
+    private final long createdAt;
 
     /*
      * The Unix timestamp, in seconds, representing when this item expires.
      */
     @Generated
-    @JsonProperty(value = "expires_at")
-    private OffsetDateTime expiresAt;
+    private final OffsetDateTime expiresAt;
 
     /*
      * The Unix timestamp, in seconds, representing when this item was started.
      */
     @Generated
-    @JsonProperty(value = "started_at")
-    private OffsetDateTime startedAt;
+    private final OffsetDateTime startedAt;
 
     /*
      * The Unix timestamp, in seconds, representing when this completed.
      */
     @Generated
-    @JsonProperty(value = "completed_at")
-    private OffsetDateTime completedAt;
+    private final OffsetDateTime completedAt;
 
     /*
      * The Unix timestamp, in seconds, representing when this was cancelled.
      */
     @Generated
-    @JsonProperty(value = "cancelled_at")
-    private OffsetDateTime cancelledAt;
+    private final OffsetDateTime cancelledAt;
 
     /*
      * The Unix timestamp, in seconds, representing when this failed.
      */
     @Generated
-    @JsonProperty(value = "failed_at")
-    private OffsetDateTime failedAt;
+    private final OffsetDateTime failedAt;
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
-    private Map metadata;
+    private final Map metadata;
 
     /**
      * Get the id property: The identifier, which can be referenced in API endpoints.
@@ -318,9 +302,7 @@ public OffsetDateTime getFailedAt() {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -372,22 +354,113 @@ private ThreadRun(String id, String threadId, String assistantId, RunStatus stat
         this.metadata = metadata;
     }
 
-    @Generated
-    @JsonCreator
-    private ThreadRun(@JsonProperty(value = "id") String id, @JsonProperty(value = "thread_id") String threadId,
-        @JsonProperty(value = "assistant_id") String assistantId, @JsonProperty(value = "status") RunStatus status,
-        @JsonProperty(value = "last_error") RunError lastError, @JsonProperty(value = "model") String model,
-        @JsonProperty(value = "instructions") String instructions,
-        @JsonProperty(value = "tools") List tools,
-        @JsonProperty(value = "file_ids") List fileIds, @JsonProperty(value = "created_at") long createdAt,
-        @JsonProperty(value = "expires_at") OffsetDateTime expiresAt,
-        @JsonProperty(value = "started_at") OffsetDateTime startedAt,
-        @JsonProperty(value = "completed_at") OffsetDateTime completedAt,
-        @JsonProperty(value = "cancelled_at") OffsetDateTime cancelledAt,
-        @JsonProperty(value = "failed_at") OffsetDateTime failedAt,
-        @JsonProperty(value = "metadata") Map metadata) {
-        this(id, threadId, assistantId, status, lastError, model, instructions, tools, fileIds,
-            OffsetDateTime.ofInstant(Instant.ofEpochSecond(createdAt), ZoneOffset.UTC), expiresAt, startedAt,
-            completedAt, cancelledAt, failedAt, metadata);
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("object", this.object);
+        jsonWriter.writeStringField("thread_id", this.threadId);
+        jsonWriter.writeStringField("assistant_id", this.assistantId);
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        jsonWriter.writeJsonField("last_error", this.lastError);
+        jsonWriter.writeStringField("model", this.model);
+        jsonWriter.writeStringField("instructions", this.instructions);
+        jsonWriter.writeArrayField("tools", this.tools, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("file_ids", this.fileIds, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeLongField("created_at", this.createdAt);
+        jsonWriter.writeStringField("expires_at",
+            this.expiresAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.expiresAt));
+        jsonWriter.writeStringField("started_at",
+            this.startedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.startedAt));
+        jsonWriter.writeStringField("completed_at",
+            this.completedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.completedAt));
+        jsonWriter.writeStringField("cancelled_at",
+            this.cancelledAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.cancelledAt));
+        jsonWriter.writeStringField("failed_at",
+            this.failedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.failedAt));
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeJsonField("required_action", this.requiredAction);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ThreadRun from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ThreadRun if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+     * @throws IOException If an error occurs while reading the ThreadRun.
+     */
+    @Generated
+    public static ThreadRun fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String id = null;
+            String threadId = null;
+            String assistantId = null;
+            RunStatus status = null;
+            RunError lastError = null;
+            String model = null;
+            String instructions = null;
+            List tools = null;
+            List fileIds = null;
+            OffsetDateTime createdAt = null;
+            OffsetDateTime expiresAt = null;
+            OffsetDateTime startedAt = null;
+            OffsetDateTime completedAt = null;
+            OffsetDateTime cancelledAt = null;
+            OffsetDateTime failedAt = null;
+            Map metadata = null;
+            RequiredAction requiredAction = null;
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("id".equals(fieldName)) {
+                    id = reader.getString();
+                } else if ("thread_id".equals(fieldName)) {
+                    threadId = reader.getString();
+                } else if ("assistant_id".equals(fieldName)) {
+                    assistantId = reader.getString();
+                } else if ("status".equals(fieldName)) {
+                    status = RunStatus.fromString(reader.getString());
+                } else if ("last_error".equals(fieldName)) {
+                    lastError = RunError.fromJson(reader);
+                } else if ("model".equals(fieldName)) {
+                    model = reader.getString();
+                } else if ("instructions".equals(fieldName)) {
+                    instructions = reader.getString();
+                } else if ("tools".equals(fieldName)) {
+                    tools = reader.readArray(reader1 -> ToolDefinition.fromJson(reader1));
+                } else if ("file_ids".equals(fieldName)) {
+                    fileIds = reader.readArray(reader1 -> reader1.getString());
+                } else if ("created_at".equals(fieldName)) {
+                    createdAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC);
+                } else if ("expires_at".equals(fieldName)) {
+                    expiresAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("started_at".equals(fieldName)) {
+                    startedAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("completed_at".equals(fieldName)) {
+                    completedAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("cancelled_at".equals(fieldName)) {
+                    cancelledAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("failed_at".equals(fieldName)) {
+                    failedAt = reader.getNullable(nonNullReader -> OffsetDateTime.parse(nonNullReader.getString()));
+                } else if ("metadata".equals(fieldName)) {
+                    metadata = reader.readMap(reader1 -> reader1.getString());
+                } else if ("required_action".equals(fieldName)) {
+                    requiredAction = RequiredAction.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            ThreadRun deserializedThreadRun
+                = new ThreadRun(id, threadId, assistantId, status, lastError, model, instructions, tools, fileIds,
+                    createdAt, expiresAt, startedAt, completedAt, cancelledAt, failedAt, metadata);
+            deserializedThreadRun.requiredAction = requiredAction;
+            return deserializedThreadRun;
+        });
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ToolDefinition.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ToolDefinition.java
index c2f1de3ec865..17a5b126d20c 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ToolDefinition.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ToolDefinition.java
@@ -5,30 +5,117 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * An abstract representation of an input tool definition that an assistant can use.
  */
-@JsonTypeInfo(
-    use = JsonTypeInfo.Id.NAME,
-    include = JsonTypeInfo.As.PROPERTY,
-    property = "type",
-    defaultImpl = ToolDefinition.class)
-@JsonTypeName("ToolDefinition")
-@JsonSubTypes({
-    @JsonSubTypes.Type(name = "code_interpreter", value = CodeInterpreterToolDefinition.class),
-    @JsonSubTypes.Type(name = "retrieval", value = RetrievalToolDefinition.class),
-    @JsonSubTypes.Type(name = "function", value = FunctionToolDefinition.class) })
 @Immutable
-public class ToolDefinition {
+public class ToolDefinition implements JsonSerializable {
 
     /**
      * Creates an instance of ToolDefinition class.
      */
     @Generated
     public ToolDefinition() {
+        this.type = "ToolDefinition";
+    }
+
+    /*
+     * The object type.
+     */
+    @Generated
+    private String type;
+
+    /**
+     * Get the type property: The object type.
+     *
+     * @return the type value.
+     */
+    @Generated
+    public String getType() {
+        return this.type;
+    }
+
+    /**
+     * Set the type property: The object type.
+     *
+     * @param type the type value to set.
+     * @return the ToolDefinition object itself.
+     */
+    @Generated
+    ToolDefinition setType(String type) {
+        this.type = type;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("type", this.type);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ToolDefinition from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ToolDefinition if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ToolDefinition.
+     */
+    @Generated
+    public static ToolDefinition fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            String discriminatorValue = null;
+            try (JsonReader readerToUse = reader.bufferObject()) {
+                // Prepare for reading
+                readerToUse.nextToken();
+                while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
+                    String fieldName = readerToUse.getFieldName();
+                    readerToUse.nextToken();
+                    if ("type".equals(fieldName)) {
+                        discriminatorValue = readerToUse.getString();
+                        break;
+                    } else {
+                        readerToUse.skipChildren();
+                    }
+                }
+                // Use the discriminator value to determine which subtype should be deserialized.
+                if ("code_interpreter".equals(discriminatorValue)) {
+                    return CodeInterpreterToolDefinition.fromJson(readerToUse.reset());
+                } else if ("retrieval".equals(discriminatorValue)) {
+                    return RetrievalToolDefinition.fromJson(readerToUse.reset());
+                } else if ("function".equals(discriminatorValue)) {
+                    return FunctionToolDefinition.fromJson(readerToUse.reset());
+                } else {
+                    return fromJsonKnownDiscriminator(readerToUse.reset());
+                }
+            }
+        });
+    }
+
+    @Generated
+    static ToolDefinition fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ToolDefinition deserializedToolDefinition = new ToolDefinition();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("type".equals(fieldName)) {
+                    deserializedToolDefinition.type = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedToolDefinition;
+        });
     }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ToolOutput.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ToolOutput.java
index f0e1778c31c3..efac0a9af258 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ToolOutput.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/ToolOutput.java
@@ -5,26 +5,28 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The data provided during a tool outputs submission to resolve pending tool calls and allow the model to continue.
  */
 @Fluent
-public final class ToolOutput {
+public final class ToolOutput implements JsonSerializable {
 
     /*
      * The ID of the tool call being resolved, as provided in the tool calls of a required action from a run.
      */
     @Generated
-    @JsonProperty(value = "tool_call_id")
     private String toolCallId;
 
     /*
      * The output from the tool to be submitted.
      */
     @Generated
-    @JsonProperty(value = "output")
     private String output;
 
     /**
@@ -35,8 +37,7 @@ public ToolOutput() {
     }
 
     /**
-     * Get the toolCallId property: The ID of the tool call being resolved, as provided in the tool calls of a required
-     * action from a run.
+     * Get the toolCallId property: The ID of the tool call being resolved, as provided in the tool calls of a required action from a run.
      *
      * @return the toolCallId value.
      */
@@ -46,8 +47,7 @@ public String getToolCallId() {
     }
 
     /**
-     * Set the toolCallId property: The ID of the tool call being resolved, as provided in the tool calls of a required
-     * action from a run.
+     * Set the toolCallId property: The ID of the tool call being resolved, as provided in the tool calls of a required action from a run.
      *
      * @param toolCallId the toolCallId value to set.
      * @return the ToolOutput object itself.
@@ -79,4 +79,42 @@ public ToolOutput setOutput(String output) {
         this.output = output;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("tool_call_id", this.toolCallId);
+        jsonWriter.writeStringField("output", this.output);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ToolOutput from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ToolOutput if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ToolOutput.
+     */
+    @Generated
+    public static ToolOutput fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ToolOutput deserializedToolOutput = new ToolOutput();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("tool_call_id".equals(fieldName)) {
+                    deserializedToolOutput.toolCallId = reader.getString();
+                } else if ("output".equals(fieldName)) {
+                    deserializedToolOutput.output = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedToolOutput;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/UpdateAssistantOptions.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/UpdateAssistantOptions.java
index c3c80987fedc..5f238400c404 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/UpdateAssistantOptions.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/com/azure/ai/openai/assistants/models/UpdateAssistantOptions.java
@@ -5,7 +5,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -13,57 +17,48 @@
  * The request details to use when modifying an existing assistant.
  */
 @Fluent
-public final class UpdateAssistantOptions {
+public final class UpdateAssistantOptions implements JsonSerializable {
 
     /*
      * The ID of the model to use.
      */
     @Generated
-    @JsonProperty(value = "model")
     private String model;
 
     /*
      * The modified name for the assistant to use.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The modified description for the assistant to use.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The modified system instructions for the new assistant to use.
      */
     @Generated
-    @JsonProperty(value = "instructions")
     private String instructions;
 
     /*
      * The modified collection of tools to enable for the assistant.
      */
     @Generated
-    @JsonProperty(value = "tools")
     private List tools;
 
     /*
      * The modified list of previously uploaded fileIDs to attach to the assistant.
      */
     @Generated
-    @JsonProperty(value = "file_ids")
     private List fileIds;
 
     /*
-     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information
-     * about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512
-     * characters in length.
+     * A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      */
     @Generated
-    @JsonProperty(value = "metadata")
     private Map metadata;
 
     /**
@@ -206,9 +201,7 @@ public UpdateAssistantOptions setFileIds(List fileIds) {
     }
 
     /**
-     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Get the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @return the metadata value.
      */
@@ -218,9 +211,7 @@ public Map getMetadata() {
     }
 
     /**
-     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing
-     * additional information about that object in a structured format. Keys may be up to 64 characters in length and
-     * values may be up to 512 characters in length.
+     * Set the metadata property: A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
      *
      * @param metadata the metadata value to set.
      * @return the UpdateAssistantOptions object itself.
@@ -230,4 +221,60 @@ public UpdateAssistantOptions setMetadata(Map metadata) {
         this.metadata = metadata;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("model", this.model);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("instructions", this.instructions);
+        jsonWriter.writeArrayField("tools", this.tools, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("file_ids", this.fileIds, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of UpdateAssistantOptions from the JsonReader.
+     *
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of UpdateAssistantOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the UpdateAssistantOptions.
+     */
+    @Generated
+    public static UpdateAssistantOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            UpdateAssistantOptions deserializedUpdateAssistantOptions = new UpdateAssistantOptions();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+                if ("model".equals(fieldName)) {
+                    deserializedUpdateAssistantOptions.model = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedUpdateAssistantOptions.name = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    deserializedUpdateAssistantOptions.description = reader.getString();
+                } else if ("instructions".equals(fieldName)) {
+                    deserializedUpdateAssistantOptions.instructions = reader.getString();
+                } else if ("tools".equals(fieldName)) {
+                    List tools = reader.readArray(reader1 -> ToolDefinition.fromJson(reader1));
+                    deserializedUpdateAssistantOptions.tools = tools;
+                } else if ("file_ids".equals(fieldName)) {
+                    List fileIds = reader.readArray(reader1 -> reader1.getString());
+                    deserializedUpdateAssistantOptions.fileIds = fileIds;
+                } else if ("metadata".equals(fieldName)) {
+                    Map metadata = reader.readMap(reader1 -> reader1.getString());
+                    deserializedUpdateAssistantOptions.metadata = metadata;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+            return deserializedUpdateAssistantOptions;
+        });
+    }
 }
diff --git a/sdk/openai/azure-ai-openai-assistants/src/main/java/module-info.java b/sdk/openai/azure-ai-openai-assistants/src/main/java/module-info.java
index d5333474b976..10877b74953f 100644
--- a/sdk/openai/azure-ai-openai-assistants/src/main/java/module-info.java
+++ b/sdk/openai/azure-ai-openai-assistants/src/main/java/module-info.java
@@ -4,9 +4,10 @@
 
 module com.azure.ai.openai.assistants {
     requires transitive com.azure.core;
+    requires transitive com.azure.json;
     exports com.azure.ai.openai.assistants;
     exports com.azure.ai.openai.assistants.models;
-    opens com.azure.ai.openai.assistants.models to com.azure.core, com.fasterxml.jackson.databind;
-    opens com.azure.ai.openai.assistants.implementation.models to com.azure.core, com.fasterxml.jackson.databind;
-    opens com.azure.ai.openai.assistants.implementation to com.azure.core, com.fasterxml.jackson.databind;
+    opens com.azure.ai.openai.assistants.models to com.azure.core;
+    opens com.azure.ai.openai.assistants.implementation.models to com.azure.core;
+    opens com.azure.ai.openai.assistants.implementation to com.azure.core;
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/DataMapClientBuilder.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/DataMapClientBuilder.java
index 946d7c991754..7a6d7979b672 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/DataMapClientBuilder.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/DataMapClientBuilder.java
@@ -22,8 +22,8 @@
 import com.azure.core.http.policy.AddHeadersFromContextPolicy;
 import com.azure.core.http.policy.AddHeadersPolicy;
 import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
-import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpPipelinePolicy;
 import com.azure.core.http.policy.HttpPolicyProviders;
 import com.azure.core.http.policy.RequestIdPolicy;
@@ -297,7 +297,8 @@ private HttpPipeline createHttpPipeline() {
         if (headers.getSize() > 0) {
             policies.add(new AddHeadersPolicy(headers));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addBeforeRetryPolicies(policies);
         policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy()));
@@ -305,12 +306,15 @@ private HttpPipeline createHttpPipeline() {
         if (tokenCredential != null) {
             policies.add(new BearerTokenAuthenticationPolicy(tokenCredential, DEFAULT_SCOPES));
         }
-        this.pipelinePolicies.stream().filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+        this.pipelinePolicies.stream()
+            .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
             .forEach(p -> policies.add(p));
         HttpPolicyProviders.addAfterRetryPolicies(policies);
         policies.add(new HttpLoggingPolicy(localHttpLogOptions));
         HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0]))
-            .httpClient(httpClient).clientOptions(localClientOptions).build();
+            .httpClient(httpClient)
+            .clientOptions(localClientOptions)
+            .build();
         return httpPipeline;
     }
 
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/DiscoveryAsyncClient.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/DiscoveryAsyncClient.java
index 7185af3317cc..8b7770db8814 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/DiscoveryAsyncClient.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/DiscoveryAsyncClient.java
@@ -45,9 +45,7 @@ public final class DiscoveryAsyncClient {
 
     /**
      * Get data using search.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     keywords: String (Optional)
@@ -75,15 +73,13 @@ public final class DiscoveryAsyncClient {
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
-     *     @search.count: Integer (Optional)
-     *     @search.count.approximate: Boolean (Optional)
+     *     @search.count: Integer (Optional)
+     *     @search.count.approximate: Boolean (Optional)
      *     continuationToken: String (Optional)
-     *     @search.facets (Optional): {
+     *     @search.facets (Optional): {
      *         entityType (Optional): [
      *              (Optional){
      *                 count: Integer (Optional)
@@ -120,7 +116,7 @@ public final class DiscoveryAsyncClient {
      *     }
      *     value (Optional): [
      *          (Optional){
-     *             @search.score: Double (Optional)
+     *             @search.score: Double (Optional)
      *             @search.highlights (Optional): {
      *                 id (Optional): [
      *                     String (Optional)
@@ -199,9 +195,7 @@ public Mono> queryWithResponse(BinaryData queryOptions, Req
 
     /**
      * Get search suggestions by query criteria.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     keywords: String (Optional)
@@ -209,14 +203,12 @@ public Mono> queryWithResponse(BinaryData queryOptions, Req
      *     filter: Object (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     value (Optional): [
      *          (Optional){
-     *             @search.score: Double (Optional)
+     *             @search.score: Double (Optional)
      *             @search.text: String (Optional)
      *             objectType: String (Optional)
      *             createTime: Long (Optional)
@@ -269,8 +261,7 @@ public Mono> queryWithResponse(BinaryData queryOptions, Req
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return search suggestions by query criteria along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return search suggestions by query criteria along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -280,9 +271,7 @@ public Mono> suggestWithResponse(BinaryData suggestOptions,
 
     /**
      * Get auto complete options.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     keywords: String (Optional)
@@ -290,9 +279,7 @@ public Mono> suggestWithResponse(BinaryData suggestOptions,
      *     filter: Object (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     value (Optional): [
@@ -379,6 +366,7 @@ public Mono autoComplete(AutoCompleteOptions autoCompleteOpt
         // Generated convenience method for autoCompleteWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return autoCompleteWithResponse(BinaryData.fromObject(autoCompleteOptions), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(AutoCompleteResult.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(AutoCompleteResult.class));
     }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/DiscoveryClient.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/DiscoveryClient.java
index 03233c0eee29..b173534cea0e 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/DiscoveryClient.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/DiscoveryClient.java
@@ -43,9 +43,7 @@ public final class DiscoveryClient {
 
     /**
      * Get data using search.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     keywords: String (Optional)
@@ -73,15 +71,13 @@ public final class DiscoveryClient {
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
-     *     @search.count: Integer (Optional)
-     *     @search.count.approximate: Boolean (Optional)
+     *     @search.count: Integer (Optional)
+     *     @search.count.approximate: Boolean (Optional)
      *     continuationToken: String (Optional)
-     *     @search.facets (Optional): {
+     *     @search.facets (Optional): {
      *         entityType (Optional): [
      *              (Optional){
      *                 count: Integer (Optional)
@@ -118,7 +114,7 @@ public final class DiscoveryClient {
      *     }
      *     value (Optional): [
      *          (Optional){
-     *             @search.score: Double (Optional)
+     *             @search.score: Double (Optional)
      *             @search.highlights (Optional): {
      *                 id (Optional): [
      *                     String (Optional)
@@ -197,9 +193,7 @@ public Response queryWithResponse(BinaryData queryOptions, RequestOp
 
     /**
      * Get search suggestions by query criteria.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     keywords: String (Optional)
@@ -207,14 +201,12 @@ public Response queryWithResponse(BinaryData queryOptions, RequestOp
      *     filter: Object (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     value (Optional): [
      *          (Optional){
-     *             @search.score: Double (Optional)
+     *             @search.score: Double (Optional)
      *             @search.text: String (Optional)
      *             objectType: String (Optional)
      *             createTime: Long (Optional)
@@ -277,9 +269,7 @@ public Response suggestWithResponse(BinaryData suggestOptions, Reque
 
     /**
      * Get auto complete options.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     keywords: String (Optional)
@@ -287,9 +277,7 @@ public Response suggestWithResponse(BinaryData suggestOptions, Reque
      *     filter: Object (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     value (Optional): [
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/EntityAsyncClient.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/EntityAsyncClient.java
index 89a7486d0a2c..ddeb84842369 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/EntityAsyncClient.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/EntityAsyncClient.java
@@ -61,36 +61,17 @@ public final class EntityAsyncClient {
      * collections are not well supported. E.g., array<array<int>>, array<map<string,
      * int>>.
      * For each contact type, the maximum number of contacts is 20.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating - * entities. Allowed values: "ignore", "replace", "merge".
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you - * need to move an entity to another collection.
Query Parameters
NameTypeRequiredDescription
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating + * entities. Allowed values: "ignore", "replace", "merge".
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you + * need to move an entity to another collection.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -169,9 +150,7 @@ public final class EntityAsyncClient {
      *     entity (Optional): (recursive schema, see entity above)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -246,8 +225,7 @@ public final class EntityAsyncClient {
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -258,34 +236,15 @@ public Mono> createOrUpdateWithResponse(BinaryData atlasEnt
 
     /**
      * List entities in bulk identified by its GUIDs.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -391,36 +350,17 @@ public Mono> getByIdsWithResponse(List guid, Reques
      * array<map<string, int>>.
      * For each contact type, the maximum number of contacts
      * is 20.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you - * need to move an entity to another collection.
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating - * entities. Allowed values: "ignore", "replace", "merge".
Query Parameters
NameTypeRequiredDescription
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you + * need to move an entity to another collection.
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating + * entities. Allowed values: "ignore", "replace", "merge".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -501,9 +441,7 @@ public Mono> getByIdsWithResponse(List guid, Reques
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -578,8 +516,7 @@ public Mono> getByIdsWithResponse(List guid, Reques
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -591,9 +528,7 @@ public Mono> batchCreateOrUpdateWithResponse(BinaryData atl
     /**
      * Delete a list of entities in bulk identified by their GUIDs or unique
      * attributes.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -667,8 +602,7 @@ public Mono> batchCreateOrUpdateWithResponse(BinaryData atl
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -678,9 +612,7 @@ public Mono> batchDeleteWithResponse(List guid, Req
 
     /**
      * Associate a classification to multiple entities in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     classification (Optional): {
@@ -723,34 +655,15 @@ public Mono> addClassificationWithResponse(BinaryData classificat
 
     /**
      * Get complete definition of an entity given its GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -836,8 +749,7 @@ public Mono> addClassificationWithResponse(BinaryData classificat
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return complete definition of an entity given its GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return complete definition of an entity given its GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -851,15 +763,11 @@ public Mono> getWithResponse(String guid, RequestOptions re
      * Supports only primitive attribute type and entity references.
      * It does not support updating complex types like arrays, and maps.
      * Null updates are not possible.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * Object
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -935,8 +843,7 @@ public Mono> getWithResponse(String guid, RequestOptions re
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -947,9 +854,7 @@ public Mono> updateAttributeByIdWithResponse(String guid, S
 
     /**
      * Delete an entity identified by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -1023,8 +928,7 @@ public Mono> updateAttributeByIdWithResponse(String guid, S
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1034,9 +938,7 @@ public Mono> deleteWithResponse(String guid, RequestOptions
 
     /**
      * Get classification for a given entity represented by a GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -1064,8 +966,7 @@ public Mono> deleteWithResponse(String guid, RequestOptions
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return classification for a given entity represented by a GUID along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return classification for a given entity represented by a GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1095,9 +996,7 @@ public Mono> removeClassificationWithResponse(String guid, String
 
     /**
      * List classifications for a given entity represented by a GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     list (Optional): [
@@ -1127,9 +1026,7 @@ public Mono> getClassificationsWithResponse(String guid, Re
 
     /**
      * Add classifications to an existing entity represented by a GUID.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -1170,9 +1067,7 @@ public Mono> addClassificationsWithResponse(String guid, BinaryDa
 
     /**
      * Update classifications to an existing entity represented by a guid.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -1226,41 +1121,17 @@ public Mono> updateClassificationsWithResponse(String guid, Binar
      * The REST request would look something like this:
      * GET
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -1359,8 +1230,7 @@ public Mono> updateClassificationsWithResponse(String guid, Binar
      * 
      * The REST request would look something like this:
      * GET
-     * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1385,29 +1255,15 @@ public Mono> getByUniqueAttributeWithResponse(String typeNa
      * request would look something like this:
      * PUT
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -1486,9 +1342,7 @@ public Mono> getByUniqueAttributeWithResponse(String typeNa
      *     entity (Optional): (recursive schema, see entity above)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -1564,8 +1418,7 @@ public Mono> getByUniqueAttributeWithResponse(String typeNa
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1588,29 +1441,15 @@ public Mono> updateByUniqueAttributeWithResponse(String typ
      * request would look something like this:
      * DELETE
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -1684,8 +1523,7 @@ public Mono> updateByUniqueAttributeWithResponse(String typ
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1697,24 +1535,12 @@ public Mono> deleteByUniqueAttributeWithResponse(String typ
     /**
      * Delete a given classification from an entity identified by its type and unique
      * attributes.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} * @@ -1737,29 +1563,15 @@ public Mono> removeClassificationByUniqueAttributeWithResponse(St /** * Add classification to the entity identified by its type and unique attributes. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -1800,29 +1612,15 @@ public Mono> addClassificationsByUniqueAttributeWithResponse(Stri
 
     /**
      * Update classification on an entity identified by its type and unique attributes.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -1864,9 +1662,7 @@ public Mono> updateClassificationsUniqueByAttributeWithResponse(S
 
     /**
      * Set classifications on entities in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guidHeaderMap (Optional): {
@@ -1925,9 +1721,7 @@ public Mono> updateClassificationsUniqueByAttributeWithResponse(S
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *     String (Required)
@@ -1968,42 +1762,18 @@ public Mono> batchSetClassificationsWithResponse(BinaryData
      * 
      * Note:
      * at least one unique attribute must be provided.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * - * + * example. qualifiedName can be changed to other unique attributes) *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr_N:qualifiedNameStringNoQualified name of an entity. E.g. to find 2 entities you can set + *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr_N:qualifiedNameStringNoQualified name of an entity. E.g. to find 2 entities you can set * attrs_1:qualifiedName=db1@cl1&attrs_2:qualifiedName=db2@cl1. (This is only an - * example. qualifiedName can be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -2103,9 +1873,7 @@ public Mono> batchGetByUniqueAttributesWithResponse(String
 
     /**
      * Get entity header given its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -2177,9 +1945,7 @@ public Mono> getHeaderWithResponse(String guid, RequestOpti
 
     /**
      * Remove business metadata from an entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String (Required): {
@@ -2206,29 +1972,15 @@ public Mono> removeBusinessMetadataWithResponse(String guid, Bina
 
     /**
      * Add business metadata to an entity.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
isOverwriteBooleanNoWhether to overwrite the existing business metadata on the entity or not, - * default is false.
Query Parameters
NameTypeRequiredDescription
isOverwriteBooleanNoWhether to overwrite the existing business metadata on the entity or not, + * default is false.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String (Required): {
@@ -2255,9 +2007,7 @@ public Mono> addOrUpdateBusinessMetadataWithResponse(String guid,
 
     /**
      * Delete business metadata attributes from an entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: Object (Required)
@@ -2284,9 +2034,7 @@ public Mono> removeBusinessMetadataAttributesWithResponse(String
 
     /**
      * Add or update business metadata attributes.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: Object (Required)
@@ -2313,9 +2061,7 @@ public Mono> addOrUpdateBusinessMetadataAttributesWithResponse(St
 
     /**
      * Get the sample Template for uploading/creating bulk BusinessMetaData.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * BinaryData
      * }
@@ -2325,8 +2071,7 @@ public Mono> addOrUpdateBusinessMetadataAttributesWithResponse(St * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the sample Template for uploading/creating bulk BusinessMetaData along with {@link Response} on - * successful completion of {@link Mono}. + * @return the sample Template for uploading/creating bulk BusinessMetaData along with {@link Response} on successful completion of {@link Mono}. */ @Generated @ServiceMethod(returns = ReturnType.SINGLE) @@ -2336,9 +2081,7 @@ public Mono> getBusinessMetadataTemplateWithResponse(Reques /** * Upload the file for creating Business Metadata in BULK. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     failedImportInfoList (Optional): [
@@ -2367,16 +2110,13 @@ public Mono> getBusinessMetadataTemplateWithResponse(Reques
     @ServiceMethod(returns = ReturnType.SINGLE)
     Mono> importBusinessMetadataWithResponse(BinaryData businessMetadataOptions,
         RequestOptions requestOptions) {
-        // Protocol API requires serialization of parts with content-disposition and data, as operation
-        // 'importBusinessMetadata' is 'multipart/form-data'
+        // Protocol API requires serialization of parts with content-disposition and data, as operation 'importBusinessMetadata' is 'multipart/form-data'
         return this.serviceClient.importBusinessMetadataWithResponseAsync(businessMetadataOptions, requestOptions);
     }
 
     /**
      * Delete given labels to a given entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -2399,9 +2139,7 @@ public Mono> removeLabelsWithResponse(String guid, RequestOptions
 
     /**
      * Set labels to a given entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -2424,9 +2162,7 @@ public Mono> setLabelsWithResponse(String guid, RequestOptions re
 
     /**
      * Add given labels to a given entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -2461,29 +2197,15 @@ public Mono> addLabelWithResponse(String guid, RequestOptions req
      * across entities, eg. qualifiedName. The REST request would look something like
      * this: DELETE
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -2521,29 +2243,15 @@ public Mono> removeLabelsByUniqueAttributeWithResponse(String typ
      * The REST
      * request would look something like this: POST
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -2580,29 +2288,15 @@ public Mono> setLabelsByUniqueAttributeWithResponse(String typeNa
      * The REST
      * request would look something like this: PUT
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -2625,9 +2319,7 @@ public Mono> addLabelsByUniqueAttributeWithResponse(String typeNa
 
     /**
      * Move existing entities to the target collection.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     entityGuids (Optional): [
@@ -2635,9 +2327,7 @@ public Mono> addLabelsByUniqueAttributeWithResponse(String typeNa
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -2712,8 +2402,7 @@ public Mono> addLabelsByUniqueAttributeWithResponse(String typeNa
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -3845,8 +3534,7 @@ public Mono addOrUpdateBusinessMetadataAttributes(String businessMetadataN
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the sample Template for uploading/creating bulk BusinessMetaData on successful completion of
-     * {@link Mono}.
+     * @return the sample Template for uploading/creating bulk BusinessMetaData on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -3876,7 +3564,8 @@ public Mono importBusinessMetadata(BusinessMetadataOptions bus
         return importBusinessMetadataWithResponse(new MultipartFormDataHelper(requestOptions)
             .serializeFileField("file", businessMetadataOptions.getFile().getContent(),
                 businessMetadataOptions.getFile().getContentType(), businessMetadataOptions.getFile().getFilename())
-            .end().getRequestBody(), requestOptions).flatMap(FluxUtil::toMono)
+            .end()
+            .getRequestBody(), requestOptions).flatMap(FluxUtil::toMono)
             .map(protocolMethodData -> protocolMethodData.toObject(BulkImportResult.class));
     }
 
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/EntityClient.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/EntityClient.java
index 5f5cc1d4e047..a24ea3ae3a15 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/EntityClient.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/EntityClient.java
@@ -59,36 +59,17 @@ public final class EntityClient {
      * collections are not well supported. E.g., array<array<int>>, array<map<string,
      * int>>.
      * For each contact type, the maximum number of contacts is 20.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating - * entities. Allowed values: "ignore", "replace", "merge".
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you - * need to move an entity to another collection.
Query Parameters
NameTypeRequiredDescription
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating + * entities. Allowed values: "ignore", "replace", "merge".
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you + * need to move an entity to another collection.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -167,9 +148,7 @@ public final class EntityClient {
      *     entity (Optional): (recursive schema, see entity above)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -255,34 +234,15 @@ public Response createOrUpdateWithResponse(BinaryData atlasEntityWit
 
     /**
      * List entities in bulk identified by its GUIDs.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -388,36 +348,17 @@ public Response getByIdsWithResponse(List guid, RequestOptio
      * array<map<string, int>>.
      * For each contact type, the maximum number of contacts
      * is 20.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you - * need to move an entity to another collection.
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating - * entities. Allowed values: "ignore", "replace", "merge".
Query Parameters
NameTypeRequiredDescription
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you + * need to move an entity to another collection.
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating + * entities. Allowed values: "ignore", "replace", "merge".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -498,9 +439,7 @@ public Response getByIdsWithResponse(List guid, RequestOptio
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -587,9 +526,7 @@ public Response batchCreateOrUpdateWithResponse(BinaryData atlasEnti
     /**
      * Delete a list of entities in bulk identified by their GUIDs or unique
      * attributes.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -673,9 +610,7 @@ public Response batchDeleteWithResponse(List guid, RequestOp
 
     /**
      * Associate a classification to multiple entities in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     classification (Optional): {
@@ -718,34 +653,15 @@ public Response addClassificationWithResponse(BinaryData classificationAss
 
     /**
      * Get complete definition of an entity given its GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -845,15 +761,11 @@ public Response getWithResponse(String guid, RequestOptions requestO
      * Supports only primitive attribute type and entity references.
      * It does not support updating complex types like arrays, and maps.
      * Null updates are not possible.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * Object
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -940,9 +852,7 @@ public Response updateAttributeByIdWithResponse(String guid, String
 
     /**
      * Delete an entity identified by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -1026,9 +936,7 @@ public Response deleteWithResponse(String guid, RequestOptions reque
 
     /**
      * Get classification for a given entity represented by a GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -1086,9 +994,7 @@ public Response removeClassificationWithResponse(String guid, String class
 
     /**
      * List classifications for a given entity represented by a GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     list (Optional): [
@@ -1118,9 +1024,7 @@ public Response getClassificationsWithResponse(String guid, RequestO
 
     /**
      * Add classifications to an existing entity represented by a GUID.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -1160,9 +1064,7 @@ public Response addClassificationsWithResponse(String guid, BinaryData bod
 
     /**
      * Update classifications to an existing entity represented by a guid.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -1216,41 +1118,17 @@ public Response updateClassificationsWithResponse(String guid, BinaryData
      * The REST request would look something like this:
      * GET
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -1374,29 +1252,15 @@ public Response getByUniqueAttributeWithResponse(String typeName, Re
      * request would look something like this:
      * PUT
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -1475,9 +1339,7 @@ public Response getByUniqueAttributeWithResponse(String typeName, Re
      *     entity (Optional): (recursive schema, see entity above)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -1575,29 +1437,15 @@ public Response updateByUniqueAttributeWithResponse(String typeName,
      * request would look something like this:
      * DELETE
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -1682,24 +1530,12 @@ public Response deleteByUniqueAttributeWithResponse(String typeName,
     /**
      * Delete a given classification from an entity identified by its type and unique
      * attributes.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} * @@ -1722,29 +1558,15 @@ public Response removeClassificationByUniqueAttributeWithResponse(String t /** * Add classification to the entity identified by its type and unique attributes. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -1785,29 +1607,15 @@ public Response addClassificationsByUniqueAttributeWithResponse(String typ
 
     /**
      * Update classification on an entity identified by its type and unique attributes.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -1848,9 +1656,7 @@ public Response updateClassificationsUniqueByAttributeWithResponse(String
 
     /**
      * Set classifications on entities in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guidHeaderMap (Optional): {
@@ -1909,9 +1715,7 @@ public Response updateClassificationsUniqueByAttributeWithResponse(String
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *     String (Required)
@@ -1952,42 +1756,18 @@ public Response batchSetClassificationsWithResponse(BinaryData atlas
      * 
      * Note:
      * at least one unique attribute must be provided.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * - * + * example. qualifiedName can be changed to other unique attributes) *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr_N:qualifiedNameStringNoQualified name of an entity. E.g. to find 2 entities you can set + *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr_N:qualifiedNameStringNoQualified name of an entity. E.g. to find 2 entities you can set * attrs_1:qualifiedName=db1@cl1&attrs_2:qualifiedName=db2@cl1. (This is only an - * example. qualifiedName can be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -2086,9 +1866,7 @@ public Response batchGetByUniqueAttributesWithResponse(String typeNa
 
     /**
      * Get entity header given its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -2160,9 +1938,7 @@ public Response getHeaderWithResponse(String guid, RequestOptions re
 
     /**
      * Remove business metadata from an entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String (Required): {
@@ -2189,29 +1965,15 @@ public Response removeBusinessMetadataWithResponse(String guid, BinaryData
 
     /**
      * Add business metadata to an entity.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
isOverwriteBooleanNoWhether to overwrite the existing business metadata on the entity or not, - * default is false.
Query Parameters
NameTypeRequiredDescription
isOverwriteBooleanNoWhether to overwrite the existing business metadata on the entity or not, + * default is false.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String (Required): {
@@ -2238,9 +2000,7 @@ public Response addOrUpdateBusinessMetadataWithResponse(String guid, Binar
 
     /**
      * Delete business metadata attributes from an entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: Object (Required)
@@ -2267,9 +2027,7 @@ public Response removeBusinessMetadataAttributesWithResponse(String busine
 
     /**
      * Add or update business metadata attributes.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: Object (Required)
@@ -2296,9 +2054,7 @@ public Response addOrUpdateBusinessMetadataAttributesWithResponse(String b
 
     /**
      * Get the sample Template for uploading/creating bulk BusinessMetaData.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * BinaryData
      * }
@@ -2318,9 +2074,7 @@ public Response getBusinessMetadataTemplateWithResponse(RequestOptio /** * Upload the file for creating Business Metadata in BULK. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     failedImportInfoList (Optional): [
@@ -2349,16 +2103,13 @@ public Response getBusinessMetadataTemplateWithResponse(RequestOptio
     @ServiceMethod(returns = ReturnType.SINGLE)
     Response importBusinessMetadataWithResponse(BinaryData businessMetadataOptions,
         RequestOptions requestOptions) {
-        // Protocol API requires serialization of parts with content-disposition and data, as operation
-        // 'importBusinessMetadata' is 'multipart/form-data'
+        // Protocol API requires serialization of parts with content-disposition and data, as operation 'importBusinessMetadata' is 'multipart/form-data'
         return this.serviceClient.importBusinessMetadataWithResponse(businessMetadataOptions, requestOptions);
     }
 
     /**
      * Delete given labels to a given entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -2381,9 +2132,7 @@ public Response removeLabelsWithResponse(String guid, RequestOptions reque
 
     /**
      * Set labels to a given entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -2406,9 +2155,7 @@ public Response setLabelsWithResponse(String guid, RequestOptions requestO
 
     /**
      * Add given labels to a given entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -2443,29 +2190,15 @@ public Response addLabelWithResponse(String guid, RequestOptions requestOp
      * across entities, eg. qualifiedName. The REST request would look something like
      * this: DELETE
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -2502,29 +2235,15 @@ public Response removeLabelsByUniqueAttributeWithResponse(String typeName,
      * The REST
      * request would look something like this: POST
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -2561,29 +2280,15 @@ public Response setLabelsByUniqueAttributeWithResponse(String typeName, Re
      * The REST
      * request would look something like this: PUT
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -2606,9 +2311,7 @@ public Response addLabelsByUniqueAttributeWithResponse(String typeName, Re
 
     /**
      * Move existing entities to the target collection.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     entityGuids (Optional): [
@@ -2616,9 +2319,7 @@ public Response addLabelsByUniqueAttributeWithResponse(String typeName, Re
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -2859,7 +2560,8 @@ public EntityMutationResult batchCreateOrUpdate(AtlasEntitiesWithExtInfo atlasEn
                 false);
         }
         return batchCreateOrUpdateWithResponse(BinaryData.fromObject(atlasEntitiesWithExtInfo), requestOptions)
-            .getValue().toObject(EntityMutationResult.class);
+            .getValue()
+            .toObject(EntityMutationResult.class);
     }
 
     /**
@@ -2888,7 +2590,8 @@ public EntityMutationResult batchCreateOrUpdate(AtlasEntitiesWithExtInfo atlasEn
         // Generated convenience method for batchCreateOrUpdateWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return batchCreateOrUpdateWithResponse(BinaryData.fromObject(atlasEntitiesWithExtInfo), requestOptions)
-            .getValue().toObject(EntityMutationResult.class);
+            .getValue()
+            .toObject(EntityMutationResult.class);
     }
 
     /**
@@ -3812,7 +3515,8 @@ public BulkImportResult importBusinessMetadata(BusinessMetadataOptions businessM
         return importBusinessMetadataWithResponse(new MultipartFormDataHelper(requestOptions)
             .serializeFileField("file", businessMetadataOptions.getFile().getContent(),
                 businessMetadataOptions.getFile().getContentType(), businessMetadataOptions.getFile().getFilename())
-            .end().getRequestBody(), requestOptions).getValue().toObject(BulkImportResult.class);
+            .end()
+            .getRequestBody(), requestOptions).getValue().toObject(BulkImportResult.class);
     }
 
     /**
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/GlossaryAsyncClient.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/GlossaryAsyncClient.java
index 791e52c4b047..633d614e546a 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/GlossaryAsyncClient.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/GlossaryAsyncClient.java
@@ -50,52 +50,23 @@ public final class GlossaryAsyncClient {
     /**
      * Get all glossaries. Recommend using limit/offset to get pagination result.
      * Recommend using 'ignoreTermsAndCategories=true' and fetch terms/categories
-     * separately using
+     * separately using 
      * 
-     * 'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
-     * and
+     *  'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
+     * and 
      * 
-     * 'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'.
-     * 

- * Query Parameters - *

+ * 'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'. + *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -169,9 +140,7 @@ public Mono> batchGetWithResponse(RequestOptions requestOpt
 
     /**
      * Create a glossary.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -227,9 +196,7 @@ public Mono> batchGetWithResponse(RequestOptions requestOpt
      *     usage: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -302,9 +269,7 @@ public Mono> createWithResponse(BinaryData atlasGlossary, R
 
     /**
      * Create glossary category in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -366,9 +331,7 @@ public Mono> createWithResponse(BinaryData atlasGlossary, R
      *     }
      * ]
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -447,9 +410,7 @@ public Mono> createCategoriesWithResponse(BinaryData body,
 
     /**
      * Create a glossary category.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -509,9 +470,7 @@ public Mono> createCategoriesWithResponse(BinaryData body,
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -589,9 +548,7 @@ public Mono> createCategoryWithResponse(BinaryData atlasGlo
 
     /**
      * Get specific glossary category by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -658,8 +615,7 @@ public Mono> createCategoryWithResponse(BinaryData atlasGlo
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return specific glossary category by its GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return specific glossary category by its GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -669,9 +625,7 @@ public Mono> getCategoryWithResponse(String categoryId, Req
 
     /**
      * Update the given glossary category by its GUID.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -731,9 +685,7 @@ public Mono> getCategoryWithResponse(String categoryId, Req
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -830,17 +782,13 @@ public Mono> deleteCategoryWithResponse(String categoryId, Reques
     /**
      * Update the glossary category partially. So far we only supports partial
      * updating shortDescription and longDescription for category.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -921,40 +869,16 @@ public Mono> partialUpdateCategoryWithResponse(String categ
     /**
      * Get all related categories (parent and children). Limit, offset, and sort
      * parameters are currently not being enabled and won't work even they are passed.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     String (Required): [
@@ -975,8 +899,7 @@ public Mono> partialUpdateCategoryWithResponse(String categ
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return all related categories (parent and children) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return all related categories (parent and children) along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -987,40 +910,16 @@ public Mono> getRelatedCategoriesWithResponse(String catego
 
     /**
      * Get all terms associated with the specific category.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -1041,8 +940,7 @@ public Mono> getRelatedCategoriesWithResponse(String catego
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return all terms associated with the specific category along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return all terms associated with the specific category along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1052,28 +950,14 @@ public Mono> getCategoryTermsWithResponse(String categoryId
 
     /**
      * Create a glossary term.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1234,9 +1118,7 @@ public Mono> getCategoryTermsWithResponse(String categoryId
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1415,9 +1297,7 @@ public Mono> createTermWithResponse(BinaryData atlasGlossar
 
     /**
      * Get a specific glossary term by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1585,8 +1465,7 @@ public Mono> createTermWithResponse(BinaryData atlasGlossar
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a specific glossary term by its GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a specific glossary term by its GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1596,28 +1475,14 @@ public Mono> getTermWithResponse(String termId, RequestOpti
 
     /**
      * Update the given glossary term by its GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1778,9 +1643,7 @@ public Mono> getTermWithResponse(String termId, RequestOpti
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1978,36 +1841,20 @@ public Mono> deleteTermWithResponse(String termId, RequestOptions
     /**
      * Update the glossary term partially. So far we only supports partial updating
      * shortDescription, longDescription, abbreviation, usage and status for term.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -2188,28 +2035,14 @@ public Mono> partialUpdateTermWithResponse(String termId, B
 
     /**
      * Create glossary terms in bulk.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -2372,9 +2205,7 @@ public Mono> partialUpdateTermWithResponse(String termId, B
      *     }
      * ]
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -2555,40 +2386,16 @@ public Mono> createTermsWithResponse(BinaryData body, Reque
     /**
      * List all related objects assigned with the specified term. Recommend using
      * limit/offset to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -2635,9 +2442,7 @@ public Mono> getEntitiesAssignedWithTermWithResponse(String
      * [Entities Create Or Update
      * operation](https://learn.microsoft.com/en-us/rest/api/purview/datamapdataplane/entity/bulk-create-or-update?tabs=HTTP)
      * is an alternative to assign a term to multiple entities.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -2680,9 +2485,7 @@ public Mono> assignTermToEntitiesWithResponse(String termId, Bina
 
     /**
      * Delete the term assignment for the given list of related objects.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -2726,40 +2529,16 @@ public Mono> deleteTermAssignmentFromEntitiesWithResponse(String
     /**
      * Get all related terms for a specific term by its GUID. Limit, offset, and sort
      * parameters are currently not being enabled and won't work even they are passed.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     String (Required): [
@@ -2782,8 +2561,7 @@ public Mono> deleteTermAssignmentFromEntitiesWithResponse(String
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return all related terms for a specific term by its GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return all related terms for a specific term by its GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -2793,9 +2571,7 @@ public Mono> getRelatedTermsWithResponse(String termId, Req
 
     /**
      * Get a specific Glossary by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -2868,28 +2644,14 @@ public Mono> getWithResponse(String glossaryId, RequestOpti
 
     /**
      * Update the given glossary.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -2945,9 +2707,7 @@ public Mono> getWithResponse(String glossaryId, RequestOpti
      *     usage: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -3041,40 +2801,16 @@ public Mono> deleteWithResponse(String glossaryId, RequestOptions
     /**
      * Get the categories belonging to a specific glossary. Recommend using
      * limit/offset to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -3143,8 +2879,7 @@ public Mono> deleteWithResponse(String glossaryId, RequestOptions
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the categories belonging to a specific glossary along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the categories belonging to a specific glossary along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -3155,40 +2890,16 @@ public Mono> getCategoriesWithResponse(String glossaryId, R
     /**
      * Get the category headers belonging to a specific glossary. Recommend using
      * limit/offset to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -3207,8 +2918,7 @@ public Mono> getCategoriesWithResponse(String glossaryId, R
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the category headers belonging to a specific glossary along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return the category headers belonging to a specific glossary along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -3221,14 +2931,12 @@ public Mono> getCategoriesHeadersWithResponse(String glossa
      * Get a specific glossary with detailed information. This API is not
      * recommend.
      * 
-     * Recommend to fetch terms/categories details separately using
+     * Recommend to fetch terms/categories details separately using 
      * 
-     * GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms and
+     * GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms and 
      * 
      * GET /datamap/api/atlas/v2/glossary/{glossaryId}/categories.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -3452,8 +3160,7 @@ public Mono> getCategoriesHeadersWithResponse(String glossa
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a specific glossary with detailed information along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a specific glossary with detailed information along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -3466,40 +3173,24 @@ public Mono> getDetailedWithResponse(String glossaryId, Req
      * allowed to be updated.
      * 
      * So far we only supports partial updating
-     * shortDescription, longDescription, language and usage for glossary.
+     * shortDescription, longDescription, language and usage for glossary. 
      * 
      * Recommend
      * using 'ignoreTermsAndCategories=true' to reduce response body size.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -3576,40 +3267,16 @@ public Mono> partialUpdateWithResponse(String glossaryId, B
     /**
      * Get terms belonging to a specific glossary. Recommend using limit/offset to get
      * pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -3779,8 +3446,7 @@ public Mono> partialUpdateWithResponse(String glossaryId, B
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return terms belonging to a specific glossary along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return terms belonging to a specific glossary along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -3791,40 +3457,16 @@ public Mono> getTermsWithResponse(String glossaryId, Reques
     /**
      * Get term headers belonging to a specific glossary. Recommend using limit/offset
      * to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -3845,8 +3487,7 @@ public Mono> getTermsWithResponse(String glossaryId, Reques
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return term headers belonging to a specific glossary along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return term headers belonging to a specific glossary along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -3857,12 +3498,12 @@ public Mono> getTermHeadersWithResponse(String glossaryId,
     /**
      * Get all glossaries. Recommend using limit/offset to get pagination result.
      * Recommend using 'ignoreTermsAndCategories=true' and fetch terms/categories
-     * separately using
+     * separately using 
      * 
-     * 'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
-     * and
+     *  'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
+     * and 
      * 
-     * 'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'.
+     *  'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'.
      * 
      * @param limit The page size - by default there is no paging.
      * @param offset The offset for pagination purpose.
@@ -3901,12 +3542,12 @@ public Mono> batchGet(Integer limit, Integer offset, String
     /**
      * Get all glossaries. Recommend using limit/offset to get pagination result.
      * Recommend using 'ignoreTermsAndCategories=true' and fetch terms/categories
-     * separately using
+     * separately using 
      * 
-     * 'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
-     * and
+     *  'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
+     * and 
      * 
-     * 'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'.
+     *  'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'.
      * 
      * @throws HttpResponseException thrown if the request is rejected by server.
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
@@ -4213,7 +3854,8 @@ public Mono createTerm(AtlasGlossaryTerm atlasGlossaryTerm, B
             requestOptions.addQueryParam("includeTermHierarchy", String.valueOf(includeTermHierarchy), false);
         }
         return createTermWithResponse(BinaryData.fromObject(atlasGlossaryTerm), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossaryTerm.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossaryTerm.class));
     }
 
     /**
@@ -4234,7 +3876,8 @@ public Mono createTerm(AtlasGlossaryTerm atlasGlossaryTerm) {
         // Generated convenience method for createTermWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return createTermWithResponse(BinaryData.fromObject(atlasGlossaryTerm), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossaryTerm.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossaryTerm.class));
     }
 
     /**
@@ -4282,7 +3925,8 @@ public Mono updateTerm(String termId, AtlasGlossaryTerm atlas
             requestOptions.addQueryParam("includeTermHierarchy", String.valueOf(includeTermHierarchy), false);
         }
         return updateTermWithResponse(termId, BinaryData.fromObject(atlasGlossaryTerm), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossaryTerm.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossaryTerm.class));
     }
 
     /**
@@ -4304,7 +3948,8 @@ public Mono updateTerm(String termId, AtlasGlossaryTerm atlas
         // Generated convenience method for updateTermWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return updateTermWithResponse(termId, BinaryData.fromObject(atlasGlossaryTerm), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossaryTerm.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossaryTerm.class));
     }
 
     /**
@@ -4353,7 +3998,8 @@ public Mono partialUpdateTerm(String termId, Map protocolMethodData.toObject(AtlasGlossaryTerm.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossaryTerm.class));
     }
 
     /**
@@ -4377,7 +4023,8 @@ public Mono partialUpdateTerm(String termId, Map protocolMethodData.toObject(AtlasGlossaryTerm.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossaryTerm.class));
     }
 
     /**
@@ -4636,7 +4283,8 @@ public Mono update(String glossaryId, AtlasGlossary atlasGlossary
             requestOptions.addQueryParam("ignoreTermsAndCategories", String.valueOf(ignoreTermsAndCategories), false);
         }
         return updateWithResponse(glossaryId, BinaryData.fromObject(atlasGlossary), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossary.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossary.class));
     }
 
     /**
@@ -4658,7 +4306,8 @@ public Mono update(String glossaryId, AtlasGlossary atlasGlossary
         // Generated convenience method for updateWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return updateWithResponse(glossaryId, BinaryData.fromObject(atlasGlossary), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossary.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossary.class));
     }
 
     /**
@@ -4800,9 +4449,9 @@ public Mono> getCategoriesHeaders(String glossa
      * Get a specific glossary with detailed information. This API is not
      * recommend.
      * 
-     * Recommend to fetch terms/categories details separately using
+     * Recommend to fetch terms/categories details separately using 
      * 
-     * GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms and
+     * GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms and 
      * 
      * GET /datamap/api/atlas/v2/glossary/{glossaryId}/categories.
      * 
@@ -4829,7 +4478,7 @@ public Mono getDetailed(String glossaryId) {
      * allowed to be updated.
      * 
      * So far we only supports partial updating
-     * shortDescription, longDescription, language and usage for glossary.
+     * shortDescription, longDescription, language and usage for glossary. 
      * 
      * Recommend
      * using 'ignoreTermsAndCategories=true' to reduce response body size.
@@ -4856,7 +4505,8 @@ public Mono partialUpdate(String glossaryId, Map
             requestOptions.addQueryParam("ignoreTermsAndCategories", String.valueOf(ignoreTermsAndCategories), false);
         }
         return partialUpdateWithResponse(glossaryId, BinaryData.fromObject(body), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossary.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossary.class));
     }
 
     /**
@@ -4864,7 +4514,7 @@ public Mono partialUpdate(String glossaryId, Map
      * allowed to be updated.
      * 
      * So far we only supports partial updating
-     * shortDescription, longDescription, language and usage for glossary.
+     * shortDescription, longDescription, language and usage for glossary. 
      * 
      * Recommend
      * using 'ignoreTermsAndCategories=true' to reduce response body size.
@@ -4886,7 +4536,8 @@ public Mono partialUpdate(String glossaryId, Map
         // Generated convenience method for partialUpdateWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return partialUpdateWithResponse(glossaryId, BinaryData.fromObject(body), requestOptions)
-            .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossary.class));
+            .flatMap(FluxUtil::toMono)
+            .map(protocolMethodData -> protocolMethodData.toObject(AtlasGlossary.class));
     }
 
     /**
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/GlossaryClient.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/GlossaryClient.java
index e658f7d9d801..8d3f4dce4eae 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/GlossaryClient.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/GlossaryClient.java
@@ -48,52 +48,23 @@ public final class GlossaryClient {
     /**
      * Get all glossaries. Recommend using limit/offset to get pagination result.
      * Recommend using 'ignoreTermsAndCategories=true' and fetch terms/categories
-     * separately using
+     * separately using 
      * 
-     * 'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
-     * and
+     *  'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
+     * and 
      * 
-     * 'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'.
-     * 

- * Query Parameters - *

+ * 'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'. + *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -167,9 +138,7 @@ public Response batchGetWithResponse(RequestOptions requestOptions)
 
     /**
      * Create a glossary.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -225,9 +194,7 @@ public Response batchGetWithResponse(RequestOptions requestOptions)
      *     usage: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -300,9 +267,7 @@ public Response createWithResponse(BinaryData atlasGlossary, Request
 
     /**
      * Create glossary category in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -364,9 +329,7 @@ public Response createWithResponse(BinaryData atlasGlossary, Request
      *     }
      * ]
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -445,9 +408,7 @@ public Response createCategoriesWithResponse(BinaryData body, Reques
 
     /**
      * Create a glossary category.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -507,9 +468,7 @@ public Response createCategoriesWithResponse(BinaryData body, Reques
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -587,9 +546,7 @@ public Response createCategoryWithResponse(BinaryData atlasGlossaryC
 
     /**
      * Get specific glossary category by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -666,9 +623,7 @@ public Response getCategoryWithResponse(String categoryId, RequestOp
 
     /**
      * Update the given glossary category by its GUID.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -728,9 +683,7 @@ public Response getCategoryWithResponse(String categoryId, RequestOp
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -827,17 +780,13 @@ public Response deleteCategoryWithResponse(String categoryId, RequestOptio
     /**
      * Update the glossary category partially. So far we only supports partial
      * updating shortDescription and longDescription for category.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -918,40 +867,16 @@ public Response partialUpdateCategoryWithResponse(String categoryId,
     /**
      * Get all related categories (parent and children). Limit, offset, and sort
      * parameters are currently not being enabled and won't work even they are passed.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     String (Required): [
@@ -982,40 +907,16 @@ public Response getRelatedCategoriesWithResponse(String categoryId,
 
     /**
      * Get all terms associated with the specific category.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -1046,28 +947,14 @@ public Response getCategoryTermsWithResponse(String categoryId, Requ
 
     /**
      * Create a glossary term.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1228,9 +1115,7 @@ public Response getCategoryTermsWithResponse(String categoryId, Requ
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1408,9 +1293,7 @@ public Response createTermWithResponse(BinaryData atlasGlossaryTerm,
 
     /**
      * Get a specific glossary term by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1588,28 +1471,14 @@ public Response getTermWithResponse(String termId, RequestOptions re
 
     /**
      * Update the given glossary term by its GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1770,9 +1639,7 @@ public Response getTermWithResponse(String termId, RequestOptions re
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1970,36 +1837,20 @@ public Response deleteTermWithResponse(String termId, RequestOptions reque
     /**
      * Update the glossary term partially. So far we only supports partial updating
      * shortDescription, longDescription, abbreviation, usage and status for term.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -2180,28 +2031,14 @@ public Response partialUpdateTermWithResponse(String termId, BinaryD
 
     /**
      * Create glossary terms in bulk.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -2364,9 +2201,7 @@ public Response partialUpdateTermWithResponse(String termId, BinaryD
      *     }
      * ]
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -2547,40 +2382,16 @@ public Response createTermsWithResponse(BinaryData body, RequestOpti
     /**
      * List all related objects assigned with the specified term. Recommend using
      * limit/offset to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -2626,9 +2437,7 @@ public Response getEntitiesAssignedWithTermWithResponse(String termI
      * [Entities Create Or Update
      * operation](https://learn.microsoft.com/en-us/rest/api/purview/datamapdataplane/entity/bulk-create-or-update?tabs=HTTP)
      * is an alternative to assign a term to multiple entities.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -2671,9 +2480,7 @@ public Response assignTermToEntitiesWithResponse(String termId, BinaryData
 
     /**
      * Delete the term assignment for the given list of related objects.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -2717,40 +2524,16 @@ public Response deleteTermAssignmentFromEntitiesWithResponse(String termId
     /**
      * Get all related terms for a specific term by its GUID. Limit, offset, and sort
      * parameters are currently not being enabled and won't work even they are passed.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     String (Required): [
@@ -2783,9 +2566,7 @@ public Response getRelatedTermsWithResponse(String termId, RequestOp
 
     /**
      * Get a specific Glossary by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -2858,28 +2639,14 @@ public Response getWithResponse(String glossaryId, RequestOptions re
 
     /**
      * Update the given glossary.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -2935,9 +2702,7 @@ public Response getWithResponse(String glossaryId, RequestOptions re
      *     usage: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -3031,40 +2796,16 @@ public Response deleteWithResponse(String glossaryId, RequestOptions reque
     /**
      * Get the categories belonging to a specific glossary. Recommend using
      * limit/offset to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -3144,40 +2885,16 @@ public Response getCategoriesWithResponse(String glossaryId, Request
     /**
      * Get the category headers belonging to a specific glossary. Recommend using
      * limit/offset to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -3208,14 +2925,12 @@ public Response getCategoriesHeadersWithResponse(String glossaryId,
      * Get a specific glossary with detailed information. This API is not
      * recommend.
      * 
-     * Recommend to fetch terms/categories details separately using
+     * Recommend to fetch terms/categories details separately using 
      * 
-     * GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms and
+     * GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms and 
      * 
      * GET /datamap/api/atlas/v2/glossary/{glossaryId}/categories.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -3452,40 +3167,24 @@ public Response getDetailedWithResponse(String glossaryId, RequestOp
      * allowed to be updated.
      * 
      * So far we only supports partial updating
-     * shortDescription, longDescription, language and usage for glossary.
+     * shortDescription, longDescription, language and usage for glossary. 
      * 
      * Recommend
      * using 'ignoreTermsAndCategories=true' to reduce response body size.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -3562,40 +3261,16 @@ public Response partialUpdateWithResponse(String glossaryId, BinaryD
     /**
      * Get terms belonging to a specific glossary. Recommend using limit/offset to get
      * pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -3776,40 +3451,16 @@ public Response getTermsWithResponse(String glossaryId, RequestOptio
     /**
      * Get term headers belonging to a specific glossary. Recommend using limit/offset
      * to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -3841,12 +3492,12 @@ public Response getTermHeadersWithResponse(String glossaryId, Reques
     /**
      * Get all glossaries. Recommend using limit/offset to get pagination result.
      * Recommend using 'ignoreTermsAndCategories=true' and fetch terms/categories
-     * separately using
+     * separately using 
      * 
-     * 'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
-     * and
+     *  'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
+     * and 
      * 
-     * 'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'.
+     *  'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'.
      * 
      * @param limit The page size - by default there is no paging.
      * @param offset The offset for pagination purpose.
@@ -3883,12 +3534,12 @@ public List batchGet(Integer limit, Integer offset, String sort,
     /**
      * Get all glossaries. Recommend using limit/offset to get pagination result.
      * Recommend using 'ignoreTermsAndCategories=true' and fetch terms/categories
-     * separately using
+     * separately using 
      * 
-     * 'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
-     * and
+     *  'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
+     * and 
      * 
-     * 'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'.
+     *  'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'.
      * 
      * @throws HttpResponseException thrown if the request is rejected by server.
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
@@ -4007,7 +3658,8 @@ public AtlasGlossaryCategory updateCategory(String categoryId, AtlasGlossaryCate
         // Generated convenience method for updateCategoryWithResponse
         RequestOptions requestOptions = new RequestOptions();
         return updateCategoryWithResponse(categoryId, BinaryData.fromObject(atlasGlossaryCategory), requestOptions)
-            .getValue().toObject(AtlasGlossaryCategory.class);
+            .getValue()
+            .toObject(AtlasGlossaryCategory.class);
     }
 
     /**
@@ -4761,9 +4413,9 @@ public List getCategoriesHeaders(String glossaryId)
      * Get a specific glossary with detailed information. This API is not
      * recommend.
      * 
-     * Recommend to fetch terms/categories details separately using
+     * Recommend to fetch terms/categories details separately using 
      * 
-     * GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms and
+     * GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms and 
      * 
      * GET /datamap/api/atlas/v2/glossary/{glossaryId}/categories.
      * 
@@ -4789,7 +4441,7 @@ public AtlasGlossaryExtInfo getDetailed(String glossaryId) {
      * allowed to be updated.
      * 
      * So far we only supports partial updating
-     * shortDescription, longDescription, language and usage for glossary.
+     * shortDescription, longDescription, language and usage for glossary. 
      * 
      * Recommend
      * using 'ignoreTermsAndCategories=true' to reduce response body size.
@@ -4823,7 +4475,7 @@ public AtlasGlossary partialUpdate(String glossaryId, Map body,
      * allowed to be updated.
      * 
      * So far we only supports partial updating
-     * shortDescription, longDescription, language and usage for glossary.
+     * shortDescription, longDescription, language and usage for glossary. 
      * 
      * Recommend
      * using 'ignoreTermsAndCategories=true' to reduce response body size.
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/LineageAsyncClient.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/LineageAsyncClient.java
index f55006d4631f..7234bdf00f17 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/LineageAsyncClient.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/LineageAsyncClient.java
@@ -41,28 +41,14 @@ public final class LineageAsyncClient {
 
     /**
      * Get lineage info of the entity specified by GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     baseEntityGuid: String (Optional)
@@ -147,15 +133,13 @@ public final class LineageAsyncClient {
      * }
* * @param guid The globally unique identifier of the entity. - * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", - * "OUTPUT", "BOTH". + * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", "OUTPUT", "BOTH". * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return lineage info of the entity specified by GUID along with {@link Response} on successful completion of - * {@link Mono}. + * @return lineage info of the entity specified by GUID along with {@link Response} on successful completion of {@link Mono}. */ @Generated @ServiceMethod(returns = ReturnType.SINGLE) @@ -165,34 +149,15 @@ public Mono> getWithResponse(String guid, String direction, /** * Return immediate next page lineage info about entity with pagination. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
offsetIntegerNoThe offset for pagination purpose.
limitIntegerNoThe page size - by default there is no paging.
Query Parameters
NameTypeRequiredDescription
offsetIntegerNoThe offset for pagination purpose.
limitIntegerNoThe page size - by default there is no paging.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     baseEntityGuid: String (Optional)
@@ -277,8 +242,7 @@ public Mono> getWithResponse(String guid, String direction,
      * }
* * @param guid The globally unique identifier of the entity. - * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", - * "OUTPUT", "BOTH". + * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", "OUTPUT", "BOTH". * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -310,35 +274,16 @@ public Mono> getNextPageWithResponse(String guid, String di * * GET * /v2/lineage/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     baseEntityGuid: String (Optional)
@@ -423,8 +368,7 @@ public Mono> getNextPageWithResponse(String guid, String di
      * }
* * @param typeName The name of the type. - * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", - * "OUTPUT", "BOTH". + * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", "OUTPUT", "BOTH". * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -583,7 +527,8 @@ public Mono getByUniqueAttribute(String typeName, LineageDirec requestOptions.addQueryParam("attr:qualifiedName", attribute, false); } return getByUniqueAttributeWithResponse(typeName, direction.toString(), requestOptions) - .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(AtlasLineageInfo.class)); + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(AtlasLineageInfo.class)); } /** @@ -620,6 +565,7 @@ public Mono getByUniqueAttribute(String typeName, LineageDirec // Generated convenience method for getByUniqueAttributeWithResponse RequestOptions requestOptions = new RequestOptions(); return getByUniqueAttributeWithResponse(typeName, direction.toString(), requestOptions) - .flatMap(FluxUtil::toMono).map(protocolMethodData -> protocolMethodData.toObject(AtlasLineageInfo.class)); + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(AtlasLineageInfo.class)); } } diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/LineageClient.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/LineageClient.java index 354ff8d62004..16127132e610 100644 --- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/LineageClient.java +++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/LineageClient.java @@ -39,28 +39,14 @@ public final class LineageClient { /** * Get lineage info of the entity specified by GUID. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     baseEntityGuid: String (Optional)
@@ -145,8 +131,7 @@ public final class LineageClient {
      * }
* * @param guid The globally unique identifier of the entity. - * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", - * "OUTPUT", "BOTH". + * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", "OUTPUT", "BOTH". * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -162,34 +147,15 @@ public Response getWithResponse(String guid, String direction, Reque /** * Return immediate next page lineage info about entity with pagination. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
offsetIntegerNoThe offset for pagination purpose.
limitIntegerNoThe page size - by default there is no paging.
Query Parameters
NameTypeRequiredDescription
offsetIntegerNoThe offset for pagination purpose.
limitIntegerNoThe page size - by default there is no paging.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     baseEntityGuid: String (Optional)
@@ -274,8 +240,7 @@ public Response getWithResponse(String guid, String direction, Reque
      * }
* * @param guid The globally unique identifier of the entity. - * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", - * "OUTPUT", "BOTH". + * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", "OUTPUT", "BOTH". * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -306,35 +271,16 @@ public Response getNextPageWithResponse(String guid, String directio * * GET * /v2/lineage/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     baseEntityGuid: String (Optional)
@@ -419,8 +365,7 @@ public Response getNextPageWithResponse(String guid, String directio
      * }
* * @param typeName The name of the type. - * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", - * "OUTPUT", "BOTH". + * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", "OUTPUT", "BOTH". * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/RelationshipAsyncClient.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/RelationshipAsyncClient.java index 40d89b2ebcf4..4c35c933837d 100644 --- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/RelationshipAsyncClient.java +++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/RelationshipAsyncClient.java @@ -41,9 +41,7 @@ public final class RelationshipAsyncClient { /** * Create a new relationship between entities. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -71,9 +69,7 @@ public final class RelationshipAsyncClient {
      *     version: Long (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -118,9 +114,7 @@ public Mono> createWithResponse(BinaryData atlasRelationshi
 
     /**
      * Update an existing relationship between entities.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -148,9 +142,7 @@ public Mono> createWithResponse(BinaryData atlasRelationshi
      *     version: Long (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -195,28 +187,14 @@ public Mono> updateWithResponse(BinaryData atlasRelationshi
 
     /**
      * Get relationship information between entities by its GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
extendedInfoBooleanNoLimits whether includes extended information.
Query Parameters
NameTypeRequiredDescription
extendedInfoBooleanNoLimits whether includes extended information.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -307,8 +285,7 @@ public Mono> updateWithResponse(BinaryData atlasRelationshi
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return relationship information between entities by its GUID along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return relationship information between entities by its GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/RelationshipClient.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/RelationshipClient.java
index 71831f545a6e..c983fa50995f 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/RelationshipClient.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/RelationshipClient.java
@@ -39,9 +39,7 @@ public final class RelationshipClient {
 
     /**
      * Create a new relationship between entities.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -69,9 +67,7 @@ public final class RelationshipClient {
      *     version: Long (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -116,9 +112,7 @@ public Response createWithResponse(BinaryData atlasRelationship, Req
 
     /**
      * Update an existing relationship between entities.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -146,9 +140,7 @@ public Response createWithResponse(BinaryData atlasRelationship, Req
      *     version: Long (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -193,28 +185,14 @@ public Response updateWithResponse(BinaryData atlasRelationship, Req
 
     /**
      * Get relationship information between entities by its GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
extendedInfoBooleanNoLimits whether includes extended information.
Query Parameters
NameTypeRequiredDescription
extendedInfoBooleanNoLimits whether includes extended information.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/TypeDefinitionAsyncClient.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/TypeDefinitionAsyncClient.java
index bd87a5f6110d..54c296475f8e 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/TypeDefinitionAsyncClient.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/TypeDefinitionAsyncClient.java
@@ -52,9 +52,7 @@ public final class TypeDefinitionAsyncClient {
 
     /**
      * Get the businessMetadata definition for the given guid.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -146,8 +144,7 @@ public final class TypeDefinitionAsyncClient {
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the businessMetadata definition for the given guid along with {@link Response} on successful completion
-     * of {@link Mono}.
+     * @return the businessMetadata definition for the given guid along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -157,9 +154,7 @@ public Mono> getBusinessMetadataByIdWithResponse(String gui
 
     /**
      * Get the businessMetadata definition by it's name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -251,8 +246,7 @@ public Mono> getBusinessMetadataByIdWithResponse(String gui
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the businessMetadata definition by it's name (unique) along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return the businessMetadata definition by it's name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -263,9 +257,7 @@ public Mono> getBusinessMetadataByNameWithResponse(String n
 
     /**
      * Get the classification definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -366,8 +358,7 @@ public Mono> getBusinessMetadataByNameWithResponse(String n
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the classification definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the classification definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -377,9 +368,7 @@ public Mono> getClassificationByIdWithResponse(String guid,
 
     /**
      * Get the classification definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -480,8 +469,7 @@ public Mono> getClassificationByIdWithResponse(String guid,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the classification definition by its name (unique) along with {@link Response} on successful completion
-     * of {@link Mono}.
+     * @return the classification definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -491,9 +479,7 @@ public Mono> getClassificationByNameWithResponse(String nam
 
     /**
      * Get the Entity definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -614,8 +600,7 @@ public Mono> getClassificationByNameWithResponse(String nam
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the Entity definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the Entity definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -625,9 +610,7 @@ public Mono> getEntityByIdWithResponse(String guid, Request
 
     /**
      * Get the entity definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -748,8 +731,7 @@ public Mono> getEntityByIdWithResponse(String guid, Request
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the entity definition by its name (unique) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the entity definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -759,9 +741,7 @@ public Mono> getEntityByNameWithResponse(String name, Reque
 
     /**
      * Get the enum definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -835,8 +815,7 @@ public Mono> getEntityByNameWithResponse(String name, Reque
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the enum definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the enum definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -846,9 +825,7 @@ public Mono> getEnumByIdWithResponse(String guid, RequestOp
 
     /**
      * Get the enum definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -922,8 +899,7 @@ public Mono> getEnumByIdWithResponse(String guid, RequestOp
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the enum definition by its name (unique) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the enum definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -933,9 +909,7 @@ public Mono> getEnumByNameWithResponse(String name, Request
 
     /**
      * Get the relationship definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1038,8 +1012,7 @@ public Mono> getEnumByNameWithResponse(String name, Request
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the relationship definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the relationship definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1049,9 +1022,7 @@ public Mono> getRelationshipByIdWithResponse(String guid, R
 
     /**
      * Get the relationship definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1154,8 +1125,7 @@ public Mono> getRelationshipByIdWithResponse(String guid, R
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the relationship definition by its name (unique) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the relationship definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1165,9 +1135,7 @@ public Mono> getRelationshipByNameWithResponse(String name,
 
     /**
      * Get the struct definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1259,8 +1227,7 @@ public Mono> getRelationshipByNameWithResponse(String name,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the struct definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the struct definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1270,9 +1237,7 @@ public Mono> getStructByIdWithResponse(String guid, Request
 
     /**
      * Get the struct definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1364,8 +1329,7 @@ public Mono> getStructByIdWithResponse(String guid, Request
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the struct definition by its name (unique) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the struct definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1375,9 +1339,7 @@ public Mono> getStructByNameWithResponse(String name, Reque
 
     /**
      * Get the type definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1520,8 +1482,7 @@ public Mono> getStructByNameWithResponse(String name, Reque
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the type definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the type definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1531,9 +1492,7 @@ public Mono> getByIdWithResponse(String guid, RequestOption
 
     /**
      * Get the type definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1676,8 +1635,7 @@ public Mono> getByIdWithResponse(String guid, RequestOption
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the type definition by its name (unique) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the type definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -1704,37 +1662,17 @@ public Mono> deleteWithResponse(String name, RequestOptions reque
 
     /**
      * List all type definitions in bulk.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * + * + * - * - * - * - * - * - * - * + * when search filter type=term_template + * *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. + *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. * This is always true - * when search filter type=term_template
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", - * "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -2033,9 +1971,7 @@ public Mono> getWithResponse(RequestOptions requestOptions)
      * Create all atlas type definitions in bulk, only new definitions will be
      * created.
      * Any changes to the existing definitions will be discarded.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -2316,9 +2252,7 @@ public Mono> getWithResponse(RequestOptions requestOptions)
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -2617,9 +2551,7 @@ public Mono> batchCreateWithResponse(BinaryData atlasTypesD
     /**
      * Update all types in bulk, changes detected in the type definitions would be
      * persisted.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -2900,9 +2832,7 @@ public Mono> batchCreateWithResponse(BinaryData atlasTypesD
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -3200,9 +3130,7 @@ public Mono> batchUpdateWithResponse(BinaryData atlasTypesD
 
     /**
      * Delete API for all types in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -3500,37 +3428,17 @@ public Mono> batchDeleteWithResponse(BinaryData atlasTypesDef, Re
 
     /**
      * List all type definitions returned as a list of minimal information header.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * + * + * - * - * - * - * - * - * - * + * when search filter type=term_template + * *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. + *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. * This is always true - * when search filter type=term_template
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", - * "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -3556,9 +3464,7 @@ public Mono> getHeadersWithResponse(RequestOptions requestO
 
     /**
      * Get the term template definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -3650,8 +3556,7 @@ public Mono> getHeadersWithResponse(RequestOptions requestO
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the term template definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the term template definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
@@ -3661,9 +3566,7 @@ public Mono> getTermTemplateByIdWithResponse(String guid, R
 
     /**
      * Get the term template definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -3755,8 +3658,7 @@ public Mono> getTermTemplateByIdWithResponse(String guid, R
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the term template definition by its name (unique) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the term template definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @Generated
     @ServiceMethod(returns = ReturnType.SINGLE)
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/TypeDefinitionClient.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/TypeDefinitionClient.java
index b631c8fbb9b8..3f0a231b2299 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/TypeDefinitionClient.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/TypeDefinitionClient.java
@@ -50,9 +50,7 @@ public final class TypeDefinitionClient {
 
     /**
      * Get the businessMetadata definition for the given guid.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -154,9 +152,7 @@ public Response getBusinessMetadataByIdWithResponse(String guid, Req
 
     /**
      * Get the businessMetadata definition by it's name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -258,9 +254,7 @@ public Response getBusinessMetadataByNameWithResponse(String name, R
 
     /**
      * Get the classification definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -371,9 +365,7 @@ public Response getClassificationByIdWithResponse(String guid, Reque
 
     /**
      * Get the classification definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -484,9 +476,7 @@ public Response getClassificationByNameWithResponse(String name, Req
 
     /**
      * Get the Entity definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -617,9 +607,7 @@ public Response getEntityByIdWithResponse(String guid, RequestOption
 
     /**
      * Get the entity definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -750,9 +738,7 @@ public Response getEntityByNameWithResponse(String name, RequestOpti
 
     /**
      * Get the enum definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -836,9 +822,7 @@ public Response getEnumByIdWithResponse(String guid, RequestOptions
 
     /**
      * Get the enum definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -922,9 +906,7 @@ public Response getEnumByNameWithResponse(String name, RequestOption
 
     /**
      * Get the relationship definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1037,9 +1019,7 @@ public Response getRelationshipByIdWithResponse(String guid, Request
 
     /**
      * Get the relationship definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1152,9 +1132,7 @@ public Response getRelationshipByNameWithResponse(String name, Reque
 
     /**
      * Get the struct definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1256,9 +1234,7 @@ public Response getStructByIdWithResponse(String guid, RequestOption
 
     /**
      * Get the struct definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1360,9 +1336,7 @@ public Response getStructByNameWithResponse(String name, RequestOpti
 
     /**
      * Get the type definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1515,9 +1489,7 @@ public Response getByIdWithResponse(String guid, RequestOptions requ
 
     /**
      * Get the type definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1687,37 +1659,17 @@ public Response deleteWithResponse(String name, RequestOptions requestOpti
 
     /**
      * List all type definitions in bulk.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * + * + * - * - * - * - * - * - * - * + * when search filter type=term_template + * *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. + *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. * This is always true - * when search filter type=term_template
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", - * "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -2016,9 +1968,7 @@ public Response getWithResponse(RequestOptions requestOptions) {
      * Create all atlas type definitions in bulk, only new definitions will be
      * created.
      * Any changes to the existing definitions will be discarded.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -2299,9 +2249,7 @@ public Response getWithResponse(RequestOptions requestOptions) {
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -2600,9 +2548,7 @@ public Response batchCreateWithResponse(BinaryData atlasTypesDef, Re
     /**
      * Update all types in bulk, changes detected in the type definitions would be
      * persisted.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -2883,9 +2829,7 @@ public Response batchCreateWithResponse(BinaryData atlasTypesDef, Re
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -3183,9 +3127,7 @@ public Response batchUpdateWithResponse(BinaryData atlasTypesDef, Re
 
     /**
      * Delete API for all types in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -3483,37 +3425,17 @@ public Response batchDeleteWithResponse(BinaryData atlasTypesDef, RequestO
 
     /**
      * List all type definitions returned as a list of minimal information header.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * + * + * - * - * - * - * - * - * - * + * when search filter type=term_template + * *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. + *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. * This is always true - * when search filter type=term_template
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", - * "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -3539,9 +3461,7 @@ public Response getHeadersWithResponse(RequestOptions requestOptions
 
     /**
      * Get the term template definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -3643,9 +3563,7 @@ public Response getTermTemplateByIdWithResponse(String guid, Request
 
     /**
      * Get the term template definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/DataMapClientImpl.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/DataMapClientImpl.java
index df4aff136716..f7e7dec13f77 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/DataMapClientImpl.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/DataMapClientImpl.java
@@ -158,7 +158,7 @@ public TypeDefinitionsImpl getTypeDefinitions() {
     /**
      * Initializes an instance of DataMapClient client.
      * 
-     * @param endpoint
+     * @param endpoint 
      * @param serviceVersion Service version.
      */
     public DataMapClientImpl(String endpoint, PurviewDataMapServiceVersion serviceVersion) {
@@ -170,7 +170,7 @@ public DataMapClientImpl(String endpoint, PurviewDataMapServiceVersion serviceVe
      * Initializes an instance of DataMapClient client.
      * 
      * @param httpPipeline The HTTP pipeline to send requests through.
-     * @param endpoint
+     * @param endpoint 
      * @param serviceVersion Service version.
      */
     public DataMapClientImpl(HttpPipeline httpPipeline, String endpoint, PurviewDataMapServiceVersion serviceVersion) {
@@ -182,7 +182,7 @@ public DataMapClientImpl(HttpPipeline httpPipeline, String endpoint, PurviewData
      * 
      * @param httpPipeline The HTTP pipeline to send requests through.
      * @param serializerAdapter The serializer to serialize an object into a string.
-     * @param endpoint
+     * @param endpoint 
      * @param serviceVersion Service version.
      */
     public DataMapClientImpl(HttpPipeline httpPipeline, SerializerAdapter serializerAdapter, String endpoint,
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/DiscoveriesImpl.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/DiscoveriesImpl.java
index 00ea54d57b82..69810ca2fa9a 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/DiscoveriesImpl.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/DiscoveriesImpl.java
@@ -63,8 +63,7 @@ public PurviewDataMapServiceVersion getServiceVersion() {
     }
 
     /**
-     * The interface defining all the services for DataMapClientDiscoveries to be used by the proxy service to perform
-     * REST calls.
+     * The interface defining all the services for DataMapClientDiscoveries to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}/datamap/api")
     @ServiceInterface(name = "DataMapClientDiscove")
@@ -134,9 +133,7 @@ Response autoCompleteSync(@HostParam("endpoint") String endpoint,
 
     /**
      * Get data using search.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     keywords: String (Optional)
@@ -164,15 +161,13 @@ Response autoCompleteSync(@HostParam("endpoint") String endpoint,
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
-     *     @search.count: Integer (Optional)
-     *     @search.count.approximate: Boolean (Optional)
+     *     @search.count: Integer (Optional)
+     *     @search.count.approximate: Boolean (Optional)
      *     continuationToken: String (Optional)
-     *     @search.facets (Optional): {
+     *     @search.facets (Optional): {
      *         entityType (Optional): [
      *              (Optional){
      *                 count: Integer (Optional)
@@ -209,7 +204,7 @@ Response autoCompleteSync(@HostParam("endpoint") String endpoint,
      *     }
      *     value (Optional): [
      *          (Optional){
-     *             @search.score: Double (Optional)
+     *             @search.score: Double (Optional)
      *             @search.highlights (Optional): {
      *                 id (Optional): [
      *                     String (Optional)
@@ -289,9 +284,7 @@ public Mono> queryWithResponseAsync(BinaryData queryOptions
 
     /**
      * Get data using search.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     keywords: String (Optional)
@@ -319,15 +312,13 @@ public Mono> queryWithResponseAsync(BinaryData queryOptions
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
-     *     @search.count: Integer (Optional)
-     *     @search.count.approximate: Boolean (Optional)
+     *     @search.count: Integer (Optional)
+     *     @search.count.approximate: Boolean (Optional)
      *     continuationToken: String (Optional)
-     *     @search.facets (Optional): {
+     *     @search.facets (Optional): {
      *         entityType (Optional): [
      *              (Optional){
      *                 count: Integer (Optional)
@@ -364,7 +355,7 @@ public Mono> queryWithResponseAsync(BinaryData queryOptions
      *     }
      *     value (Optional): [
      *          (Optional){
-     *             @search.score: Double (Optional)
+     *             @search.score: Double (Optional)
      *             @search.highlights (Optional): {
      *                 id (Optional): [
      *                     String (Optional)
@@ -444,9 +435,7 @@ public Response queryWithResponse(BinaryData queryOptions, RequestOp
 
     /**
      * Get search suggestions by query criteria.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     keywords: String (Optional)
@@ -454,14 +443,12 @@ public Response queryWithResponse(BinaryData queryOptions, RequestOp
      *     filter: Object (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     value (Optional): [
      *          (Optional){
-     *             @search.score: Double (Optional)
+     *             @search.score: Double (Optional)
      *             @search.text: String (Optional)
      *             objectType: String (Optional)
      *             createTime: Long (Optional)
@@ -514,8 +501,7 @@ public Response queryWithResponse(BinaryData queryOptions, RequestOp
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return search suggestions by query criteria along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return search suggestions by query criteria along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> suggestWithResponseAsync(BinaryData suggestOptions,
@@ -527,9 +513,7 @@ public Mono> suggestWithResponseAsync(BinaryData suggestOpt
 
     /**
      * Get search suggestions by query criteria.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     keywords: String (Optional)
@@ -537,14 +521,12 @@ public Mono> suggestWithResponseAsync(BinaryData suggestOpt
      *     filter: Object (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     value (Optional): [
      *          (Optional){
-     *             @search.score: Double (Optional)
+     *             @search.score: Double (Optional)
      *             @search.text: String (Optional)
      *             objectType: String (Optional)
      *             createTime: Long (Optional)
@@ -608,9 +590,7 @@ public Response suggestWithResponse(BinaryData suggestOptions, Reque
 
     /**
      * Get auto complete options.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     keywords: String (Optional)
@@ -618,9 +598,7 @@ public Response suggestWithResponse(BinaryData suggestOptions, Reque
      *     filter: Object (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     value (Optional): [
@@ -650,9 +628,7 @@ public Mono> autoCompleteWithResponseAsync(BinaryData autoC
 
     /**
      * Get auto complete options.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     keywords: String (Optional)
@@ -660,9 +636,7 @@ public Mono> autoCompleteWithResponseAsync(BinaryData autoC
      *     filter: Object (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     value (Optional): [
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/EntitiesImpl.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/EntitiesImpl.java
index 689742808ebc..3f212a8abf2b 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/EntitiesImpl.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/EntitiesImpl.java
@@ -70,8 +70,7 @@ public PurviewDataMapServiceVersion getServiceVersion() {
     }
 
     /**
-     * The interface defining all the services for DataMapClientEntities to be used by the proxy service to perform
-     * REST calls.
+     * The interface defining all the services for DataMapClientEntities to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}/datamap/api")
     @ServiceInterface(name = "DataMapClientEntitie")
@@ -791,36 +790,17 @@ Response moveEntitiesToCollectionSync(@HostParam("endpoint") String
      * collections are not well supported. E.g., array<array<int>>, array<map<string,
      * int>>.
      * For each contact type, the maximum number of contacts is 20.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating - * entities. Allowed values: "ignore", "replace", "merge".
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you - * need to move an entity to another collection.
Query Parameters
NameTypeRequiredDescription
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating + * entities. Allowed values: "ignore", "replace", "merge".
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you + * need to move an entity to another collection.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -899,9 +879,7 @@ Response moveEntitiesToCollectionSync(@HostParam("endpoint") String
      *     entity (Optional): (recursive schema, see entity above)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -976,8 +954,7 @@ Response moveEntitiesToCollectionSync(@HostParam("endpoint") String
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> createOrUpdateWithResponseAsync(BinaryData atlasEntityWithExtInfo,
@@ -995,36 +972,17 @@ public Mono> createOrUpdateWithResponseAsync(BinaryData atl
      * collections are not well supported. E.g., array<array<int>>, array<map<string,
      * int>>.
      * For each contact type, the maximum number of contacts is 20.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating - * entities. Allowed values: "ignore", "replace", "merge".
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you - * need to move an entity to another collection.
Query Parameters
NameTypeRequiredDescription
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating + * entities. Allowed values: "ignore", "replace", "merge".
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you + * need to move an entity to another collection.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -1103,9 +1061,7 @@ public Mono> createOrUpdateWithResponseAsync(BinaryData atl
      *     entity (Optional): (recursive schema, see entity above)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -1192,34 +1148,15 @@ public Response createOrUpdateWithResponse(BinaryData atlasEntityWit
 
     /**
      * List entities in bulk identified by its GUIDs.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -1320,34 +1257,15 @@ public Mono> getByIdsWithResponseAsync(List guid, R
 
     /**
      * List entities in bulk identified by its GUIDs.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -1455,36 +1373,17 @@ public Response getByIdsWithResponse(List guid, RequestOptio
      * array<map<string, int>>.
      * For each contact type, the maximum number of contacts
      * is 20.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you - * need to move an entity to another collection.
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating - * entities. Allowed values: "ignore", "replace", "merge".
Query Parameters
NameTypeRequiredDescription
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you + * need to move an entity to another collection.
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating + * entities. Allowed values: "ignore", "replace", "merge".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -1565,9 +1464,7 @@ public Response getByIdsWithResponse(List guid, RequestOptio
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -1642,8 +1539,7 @@ public Response getByIdsWithResponse(List guid, RequestOptio
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> batchCreateOrUpdateWithResponseAsync(BinaryData atlasEntitiesWithExtInfo,
@@ -1662,36 +1558,17 @@ public Mono> batchCreateOrUpdateWithResponseAsync(BinaryDat
      * array<map<string, int>>.
      * For each contact type, the maximum number of contacts
      * is 20.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you - * need to move an entity to another collection.
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating - * entities. Allowed values: "ignore", "replace", "merge".
Query Parameters
NameTypeRequiredDescription
collectionIdStringNoThe collection where entities will be moved to. Only specify a value if you + * need to move an entity to another collection.
businessAttributeUpdateBehaviorStringNoUsed to define the update behavior for business attributes when updating + * entities. Allowed values: "ignore", "replace", "merge".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -1772,9 +1649,7 @@ public Mono> batchCreateOrUpdateWithResponseAsync(BinaryDat
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -1862,9 +1737,7 @@ public Response batchCreateOrUpdateWithResponse(BinaryData atlasEnti
     /**
      * Delete a list of entities in bulk identified by their GUIDs or unique
      * attributes.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -1938,8 +1811,7 @@ public Response batchCreateOrUpdateWithResponse(BinaryData atlasEnti
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> batchDeleteWithResponseAsync(List guid, RequestOptions requestOptions) {
@@ -1952,9 +1824,7 @@ public Mono> batchDeleteWithResponseAsync(List guid
     /**
      * Delete a list of entities in bulk identified by their GUIDs or unique
      * attributes.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -2039,9 +1909,7 @@ public Response batchDeleteWithResponse(List guid, RequestOp
 
     /**
      * Associate a classification to multiple entities in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     classification (Optional): {
@@ -2085,9 +1953,7 @@ public Mono> addClassificationWithResponseAsync(BinaryData classi
 
     /**
      * Associate a classification to multiple entities in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     classification (Optional): {
@@ -2131,34 +1997,15 @@ public Response addClassificationWithResponse(BinaryData classificationAss
 
     /**
      * Get complete definition of an entity given its GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -2244,8 +2091,7 @@ public Response addClassificationWithResponse(BinaryData classificationAss
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return complete definition of an entity given its GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return complete definition of an entity given its GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getWithResponseAsync(String guid, RequestOptions requestOptions) {
@@ -2256,34 +2102,15 @@ public Mono> getWithResponseAsync(String guid, RequestOptio
 
     /**
      * Get complete definition of an entity given its GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -2383,15 +2210,11 @@ public Response getWithResponse(String guid, RequestOptions requestO
      * Supports only primitive attribute type and entity references.
      * It does not support updating complex types like arrays, and maps.
      * Null updates are not possible.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * Object
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -2467,8 +2290,7 @@ public Response getWithResponse(String guid, RequestOptions requestO
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> updateAttributeByIdWithResponseAsync(String guid, String name, BinaryData body,
@@ -2484,15 +2306,11 @@ public Mono> updateAttributeByIdWithResponseAsync(String gu
      * Supports only primitive attribute type and entity references.
      * It does not support updating complex types like arrays, and maps.
      * Null updates are not possible.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * Object
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -2580,9 +2398,7 @@ public Response updateAttributeByIdWithResponse(String guid, String
 
     /**
      * Delete an entity identified by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -2656,8 +2472,7 @@ public Response updateAttributeByIdWithResponse(String guid, String
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> deleteWithResponseAsync(String guid, RequestOptions requestOptions) {
@@ -2668,9 +2483,7 @@ public Mono> deleteWithResponseAsync(String guid, RequestOp
 
     /**
      * Delete an entity identified by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -2754,9 +2567,7 @@ public Response deleteWithResponse(String guid, RequestOptions reque
 
     /**
      * Get classification for a given entity represented by a GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -2784,8 +2595,7 @@ public Response deleteWithResponse(String guid, RequestOptions reque
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return classification for a given entity represented by a GUID along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return classification for a given entity represented by a GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getClassificationWithResponseAsync(String guid, String classificationName,
@@ -2797,9 +2607,7 @@ public Mono> getClassificationWithResponseAsync(String guid
 
     /**
      * Get classification for a given entity represented by a GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -2879,9 +2687,7 @@ public Response removeClassificationWithResponse(String guid, String class
 
     /**
      * List classifications for a given entity represented by a GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     list (Optional): [
@@ -2912,9 +2718,7 @@ public Mono> getClassificationsWithResponseAsync(String gui
 
     /**
      * List classifications for a given entity represented by a GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     list (Optional): [
@@ -2944,9 +2748,7 @@ public Response getClassificationsWithResponse(String guid, RequestO
 
     /**
      * Add classifications to an existing entity represented by a GUID.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -2988,9 +2790,7 @@ public Mono> addClassificationsWithResponseAsync(String guid, Bin
 
     /**
      * Add classifications to an existing entity represented by a GUID.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -3031,9 +2831,7 @@ public Response addClassificationsWithResponse(String guid, BinaryData bod
 
     /**
      * Update classifications to an existing entity represented by a guid.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -3075,9 +2873,7 @@ public Mono> updateClassificationsWithResponseAsync(String guid,
 
     /**
      * Update classifications to an existing entity represented by a guid.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -3132,41 +2928,17 @@ public Response updateClassificationsWithResponse(String guid, BinaryData
      * The REST request would look something like this:
      * GET
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -3265,8 +3037,7 @@ public Response updateClassificationsWithResponse(String guid, BinaryData
      * 
      * The REST request would look something like this:
      * GET
-     * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getByUniqueAttributeWithResponseAsync(String typeName,
@@ -3291,41 +3062,17 @@ public Mono> getByUniqueAttributeWithResponseAsync(String t
      * The REST request would look something like this:
      * GET
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -3450,29 +3197,15 @@ public Response getByUniqueAttributeWithResponse(String typeName, Re
      * request would look something like this:
      * PUT
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -3551,9 +3284,7 @@ public Response getByUniqueAttributeWithResponse(String typeName, Re
      *     entity (Optional): (recursive schema, see entity above)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -3629,8 +3360,7 @@ public Response getByUniqueAttributeWithResponse(String typeName, Re
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> updateByUniqueAttributeWithResponseAsync(String typeName,
@@ -3657,29 +3387,15 @@ public Mono> updateByUniqueAttributeWithResponseAsync(Strin
      * request would look something like this:
      * PUT
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -3758,9 +3474,7 @@ public Mono> updateByUniqueAttributeWithResponseAsync(Strin
      *     entity (Optional): (recursive schema, see entity above)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -3859,29 +3573,15 @@ public Response updateByUniqueAttributeWithResponse(String typeName,
      * request would look something like this:
      * DELETE
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -3955,8 +3655,7 @@ public Response updateByUniqueAttributeWithResponse(String typeName,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> deleteByUniqueAttributeWithResponseAsync(String typeName,
@@ -3979,29 +3678,15 @@ public Mono> deleteByUniqueAttributeWithResponseAsync(Strin
      * request would look something like this:
      * DELETE
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -4087,24 +3772,12 @@ public Response deleteByUniqueAttributeWithResponse(String typeName,
     /**
      * Delete a given classification from an entity identified by its type and unique
      * attributes.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} * @@ -4128,24 +3801,12 @@ public Mono> removeClassificationByUniqueAttributeWithResponseAsy /** * Delete a given classification from an entity identified by its type and unique * attributes. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} * @@ -4168,29 +3829,15 @@ public Response removeClassificationByUniqueAttributeWithResponse(String t /** * Add classification to the entity identified by its type and unique attributes. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -4232,29 +3879,15 @@ public Mono> addClassificationsByUniqueAttributeWithResponseAsync
 
     /**
      * Add classification to the entity identified by its type and unique attributes.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -4296,29 +3929,15 @@ public Response addClassificationsByUniqueAttributeWithResponse(String typ
 
     /**
      * Update classification on an entity identified by its type and unique attributes.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -4360,29 +3979,15 @@ public Mono> updateClassificationsUniqueByAttributeWithResponseAs
 
     /**
      * Update classification on an entity identified by its type and unique attributes.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -4424,9 +4029,7 @@ public Response updateClassificationsUniqueByAttributeWithResponse(String
 
     /**
      * Set classifications on entities in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guidHeaderMap (Optional): {
@@ -4485,9 +4088,7 @@ public Response updateClassificationsUniqueByAttributeWithResponse(String
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *     String (Required)
@@ -4512,9 +4113,7 @@ public Mono> batchSetClassificationsWithResponseAsync(Binar
 
     /**
      * Set classifications on entities in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guidHeaderMap (Optional): {
@@ -4573,9 +4172,7 @@ public Mono> batchSetClassificationsWithResponseAsync(Binar
      *     }
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *     String (Required)
@@ -4617,42 +4214,18 @@ public Response batchSetClassificationsWithResponse(BinaryData atlas
      * 
      * Note:
      * at least one unique attribute must be provided.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * - * + * example. qualifiedName can be changed to other unique attributes) *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr_N:qualifiedNameStringNoQualified name of an entity. E.g. to find 2 entities you can set + *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr_N:qualifiedNameStringNoQualified name of an entity. E.g. to find 2 entities you can set * attrs_1:qualifiedName=db1@cl1&attrs_2:qualifiedName=db2@cl1. (This is only an - * example. qualifiedName can be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -4770,42 +4343,18 @@ public Mono> batchGetByUniqueAttributesWithResponseAsync(St
      * 
      * Note:
      * at least one unique attribute must be provided.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * - * + * example. qualifiedName can be changed to other unique attributes) *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr_N:qualifiedNameStringNoQualified name of an entity. E.g. to find 2 entities you can set + *
Query Parameters
NameTypeRequiredDescription
minExtInfoBooleanNoWhether to return minimal information for referred entities.
ignoreRelationshipsBooleanNoWhether to ignore relationship attributes.
attr_N:qualifiedNameStringNoQualified name of an entity. E.g. to find 2 entities you can set * attrs_1:qualifiedName=db1@cl1&attrs_2:qualifiedName=db2@cl1. (This is only an - * example. qualifiedName can be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -4905,9 +4454,7 @@ public Response batchGetByUniqueAttributesWithResponse(String typeNa
 
     /**
      * Get entity header given its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -4980,9 +4527,7 @@ public Mono> getHeaderWithResponseAsync(String guid, Reques
 
     /**
      * Get entity header given its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -5054,9 +4599,7 @@ public Response getHeaderWithResponse(String guid, RequestOptions re
 
     /**
      * Remove business metadata from an entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String (Required): {
@@ -5084,9 +4627,7 @@ public Mono> removeBusinessMetadataWithResponseAsync(String guid,
 
     /**
      * Remove business metadata from an entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String (Required): {
@@ -5114,29 +4655,15 @@ public Response removeBusinessMetadataWithResponse(String guid, BinaryData
 
     /**
      * Add business metadata to an entity.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
isOverwriteBooleanNoWhether to overwrite the existing business metadata on the entity or not, - * default is false.
Query Parameters
NameTypeRequiredDescription
isOverwriteBooleanNoWhether to overwrite the existing business metadata on the entity or not, + * default is false.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String (Required): {
@@ -5164,29 +4691,15 @@ public Mono> addOrUpdateBusinessMetadataWithResponseAsync(String
 
     /**
      * Add business metadata to an entity.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
isOverwriteBooleanNoWhether to overwrite the existing business metadata on the entity or not, - * default is false.
Query Parameters
NameTypeRequiredDescription
isOverwriteBooleanNoWhether to overwrite the existing business metadata on the entity or not, + * default is false.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String (Required): {
@@ -5214,9 +4727,7 @@ public Response addOrUpdateBusinessMetadataWithResponse(String guid, Binar
 
     /**
      * Delete business metadata attributes from an entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: Object (Required)
@@ -5243,9 +4754,7 @@ public Mono> removeBusinessMetadataAttributesWithResponseAsync(St
 
     /**
      * Delete business metadata attributes from an entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: Object (Required)
@@ -5272,9 +4781,7 @@ public Response removeBusinessMetadataAttributesWithResponse(String busine
 
     /**
      * Add or update business metadata attributes.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: Object (Required)
@@ -5301,9 +4808,7 @@ public Mono> addOrUpdateBusinessMetadataAttributesWithResponseAsy
 
     /**
      * Add or update business metadata attributes.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: Object (Required)
@@ -5330,9 +4835,7 @@ public Response addOrUpdateBusinessMetadataAttributesWithResponse(String b
 
     /**
      * Get the sample Template for uploading/creating bulk BusinessMetaData.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * BinaryData
      * }
@@ -5342,8 +4845,7 @@ public Response addOrUpdateBusinessMetadataAttributesWithResponse(String b * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the sample Template for uploading/creating bulk BusinessMetaData along with {@link Response} on - * successful completion of {@link Mono}. + * @return the sample Template for uploading/creating bulk BusinessMetaData along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) public Mono> getBusinessMetadataTemplateWithResponseAsync(RequestOptions requestOptions) { @@ -5354,9 +4856,7 @@ public Mono> getBusinessMetadataTemplateWithResponseAsync(R /** * Get the sample Template for uploading/creating bulk BusinessMetaData. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * BinaryData
      * }
@@ -5376,9 +4876,7 @@ public Response getBusinessMetadataTemplateWithResponse(RequestOptio /** * Upload the file for creating Business Metadata in BULK. - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     failedImportInfoList (Optional): [
@@ -5414,9 +4912,7 @@ public Mono> importBusinessMetadataWithResponseAsync(Binary
 
     /**
      * Upload the file for creating Business Metadata in BULK.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     failedImportInfoList (Optional): [
@@ -5452,9 +4948,7 @@ public Response importBusinessMetadataWithResponse(BinaryData busine
 
     /**
      * Delete given labels to a given entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -5484,9 +4978,7 @@ public Mono> removeLabelsWithResponseAsync(String guid, RequestOp
 
     /**
      * Delete given labels to a given entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -5515,9 +5007,7 @@ public Response removeLabelsWithResponse(String guid, RequestOptions reque
 
     /**
      * Set labels to a given entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -5547,9 +5037,7 @@ public Mono> setLabelsWithResponseAsync(String guid, RequestOptio
 
     /**
      * Set labels to a given entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -5578,9 +5066,7 @@ public Response setLabelsWithResponse(String guid, RequestOptions requestO
 
     /**
      * Add given labels to a given entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -5610,9 +5096,7 @@ public Mono> addLabelWithResponseAsync(String guid, RequestOption
 
     /**
      * Add given labels to a given entity.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -5653,29 +5137,15 @@ public Response addLabelWithResponse(String guid, RequestOptions requestOp
      * across entities, eg. qualifiedName. The REST request would look something like
      * this: DELETE
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -5718,29 +5188,15 @@ public Mono> removeLabelsByUniqueAttributeWithResponseAsync(Strin
      * across entities, eg. qualifiedName. The REST request would look something like
      * this: DELETE
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -5784,29 +5240,15 @@ public Response removeLabelsByUniqueAttributeWithResponse(String typeName,
      * The REST
      * request would look something like this: POST
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -5851,29 +5293,15 @@ public Mono> setLabelsByUniqueAttributeWithResponseAsync(String t
      * The REST
      * request would look something like this: POST
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -5917,29 +5345,15 @@ public Response setLabelsByUniqueAttributeWithResponse(String typeName, Re
      * The REST
      * request would look something like this: PUT
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -5984,29 +5398,15 @@ public Mono> addLabelsByUniqueAttributeWithResponseAsync(String t
      * The REST
      * request would look something like this: PUT
      * /v2/entity/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *     String (Optional)
@@ -6036,9 +5436,7 @@ public Response addLabelsByUniqueAttributeWithResponse(String typeName, Re
 
     /**
      * Move existing entities to the target collection.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     entityGuids (Optional): [
@@ -6046,9 +5444,7 @@ public Response addLabelsByUniqueAttributeWithResponse(String typeName, Re
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
@@ -6123,8 +5519,7 @@ public Response addLabelsByUniqueAttributeWithResponse(String typeName, Re
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the mutation response result of entity along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the mutation response result of entity along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> moveEntitiesToCollectionWithResponseAsync(String collectionId,
@@ -6137,9 +5532,7 @@ public Mono> moveEntitiesToCollectionWithResponseAsync(Stri
 
     /**
      * Move existing entities to the target collection.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     entityGuids (Optional): [
@@ -6147,9 +5540,7 @@ public Mono> moveEntitiesToCollectionWithResponseAsync(Stri
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guidAssignments (Optional): {
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/GlossariesImpl.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/GlossariesImpl.java
index 3e521423eae7..194c149faf59 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/GlossariesImpl.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/GlossariesImpl.java
@@ -67,8 +67,7 @@ public PurviewDataMapServiceVersion getServiceVersion() {
     }
 
     /**
-     * The interface defining all the services for DataMapClientGlossaries to be used by the proxy service to perform
-     * REST calls.
+     * The interface defining all the services for DataMapClientGlossaries to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}/datamap/api")
     @ServiceInterface(name = "DataMapClientGlossar")
@@ -660,52 +659,23 @@ Response getTermHeadersSync(@HostParam("endpoint") String endpoint,
     /**
      * Get all glossaries. Recommend using limit/offset to get pagination result.
      * Recommend using 'ignoreTermsAndCategories=true' and fetch terms/categories
-     * separately using
+     * separately using 
      * 
-     * 'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
-     * and
+     *  'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
+     * and 
      * 
-     * 'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'.
-     * 

- * Query Parameters - *

+ * 'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'. + *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -781,52 +751,23 @@ public Mono> batchGetWithResponseAsync(RequestOptions reque
     /**
      * Get all glossaries. Recommend using limit/offset to get pagination result.
      * Recommend using 'ignoreTermsAndCategories=true' and fetch terms/categories
-     * separately using
+     * separately using 
      * 
-     * 'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
-     * and
+     *  'GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms'
+     * and 
      * 
-     * 'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'.
-     * 

- * Query Parameters - *

+ * 'GET '/datamap/api/atlas/v2/glossary/{glossaryId}/categories'. + *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -901,9 +842,7 @@ public Response batchGetWithResponse(RequestOptions requestOptions)
 
     /**
      * Create a glossary.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -959,9 +898,7 @@ public Response batchGetWithResponse(RequestOptions requestOptions)
      *     usage: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1035,9 +972,7 @@ public Mono> createWithResponseAsync(BinaryData atlasGlossa
 
     /**
      * Create a glossary.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1093,9 +1028,7 @@ public Mono> createWithResponseAsync(BinaryData atlasGlossa
      *     usage: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1168,9 +1101,7 @@ public Response createWithResponse(BinaryData atlasGlossary, Request
 
     /**
      * Create glossary category in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -1232,9 +1163,7 @@ public Response createWithResponse(BinaryData atlasGlossary, Request
      *     }
      * ]
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -1315,9 +1244,7 @@ public Mono> createCategoriesWithResponseAsync(BinaryData b
 
     /**
      * Create glossary category in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -1379,9 +1306,7 @@ public Mono> createCategoriesWithResponseAsync(BinaryData b
      *     }
      * ]
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -1460,9 +1385,7 @@ public Response createCategoriesWithResponse(BinaryData body, Reques
 
     /**
      * Create a glossary category.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1522,9 +1445,7 @@ public Response createCategoriesWithResponse(BinaryData body, Reques
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1603,9 +1524,7 @@ public Mono> createCategoryWithResponseAsync(BinaryData atl
 
     /**
      * Create a glossary category.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1665,9 +1584,7 @@ public Mono> createCategoryWithResponseAsync(BinaryData atl
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1746,9 +1663,7 @@ public Response createCategoryWithResponse(BinaryData atlasGlossaryC
 
     /**
      * Get specific glossary category by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1815,8 +1730,7 @@ public Response createCategoryWithResponse(BinaryData atlasGlossaryC
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return specific glossary category by its GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return specific glossary category by its GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getCategoryWithResponseAsync(String categoryId, RequestOptions requestOptions) {
@@ -1827,9 +1741,7 @@ public Mono> getCategoryWithResponseAsync(String categoryId
 
     /**
      * Get specific glossary category by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1906,9 +1818,7 @@ public Response getCategoryWithResponse(String categoryId, RequestOp
 
     /**
      * Update the given glossary category by its GUID.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -1968,9 +1878,7 @@ public Response getCategoryWithResponse(String categoryId, RequestOp
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -2050,9 +1958,7 @@ public Mono> updateCategoryWithResponseAsync(String categor
 
     /**
      * Update the given glossary category by its GUID.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -2112,9 +2018,7 @@ public Mono> updateCategoryWithResponseAsync(String categor
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -2230,17 +2134,13 @@ public Response deleteCategoryWithResponse(String categoryId, RequestOptio
     /**
      * Update the glossary category partially. So far we only supports partial
      * updating shortDescription and longDescription for category.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -2322,17 +2222,13 @@ public Mono> partialUpdateCategoryWithResponseAsync(String
     /**
      * Update the glossary category partially. So far we only supports partial
      * updating shortDescription and longDescription for category.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -2414,40 +2310,16 @@ public Response partialUpdateCategoryWithResponse(String categoryId,
     /**
      * Get all related categories (parent and children). Limit, offset, and sort
      * parameters are currently not being enabled and won't work even they are passed.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     String (Required): [
@@ -2468,8 +2340,7 @@ public Response partialUpdateCategoryWithResponse(String categoryId,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return all related categories (parent and children) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return all related categories (parent and children) along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getRelatedCategoriesWithResponseAsync(String categoryId,
@@ -2482,40 +2353,16 @@ public Mono> getRelatedCategoriesWithResponseAsync(String c
     /**
      * Get all related categories (parent and children). Limit, offset, and sort
      * parameters are currently not being enabled and won't work even they are passed.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     String (Required): [
@@ -2547,40 +2394,16 @@ public Response getRelatedCategoriesWithResponse(String categoryId,
 
     /**
      * Get all terms associated with the specific category.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -2601,8 +2424,7 @@ public Response getRelatedCategoriesWithResponse(String categoryId,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return all terms associated with the specific category along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return all terms associated with the specific category along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getCategoryTermsWithResponseAsync(String categoryId,
@@ -2614,40 +2436,16 @@ public Mono> getCategoryTermsWithResponseAsync(String categ
 
     /**
      * Get all terms associated with the specific category.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -2679,28 +2477,14 @@ public Response getCategoryTermsWithResponse(String categoryId, Requ
 
     /**
      * Create a glossary term.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -2861,9 +2645,7 @@ public Response getCategoryTermsWithResponse(String categoryId, Requ
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -3043,28 +2825,14 @@ public Mono> createTermWithResponseAsync(BinaryData atlasGl
 
     /**
      * Create a glossary term.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -3225,9 +2993,7 @@ public Mono> createTermWithResponseAsync(BinaryData atlasGl
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -3406,9 +3172,7 @@ public Response createTermWithResponse(BinaryData atlasGlossaryTerm,
 
     /**
      * Get a specific glossary term by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -3576,8 +3340,7 @@ public Response createTermWithResponse(BinaryData atlasGlossaryTerm,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a specific glossary term by its GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a specific glossary term by its GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getTermWithResponseAsync(String termId, RequestOptions requestOptions) {
@@ -3588,9 +3351,7 @@ public Mono> getTermWithResponseAsync(String termId, Reques
 
     /**
      * Get a specific glossary term by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -3769,28 +3530,14 @@ public Response getTermWithResponse(String termId, RequestOptions re
 
     /**
      * Update the given glossary term by its GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -3951,9 +3698,7 @@ public Response getTermWithResponse(String termId, RequestOptions re
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -4134,28 +3879,14 @@ public Mono> updateTermWithResponseAsync(String termId, Bin
 
     /**
      * Update the given glossary term by its GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -4316,9 +4047,7 @@ public Mono> updateTermWithResponseAsync(String termId, Bin
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -4535,36 +4264,20 @@ public Response deleteTermWithResponse(String termId, RequestOptions reque
     /**
      * Update the glossary term partially. So far we only supports partial updating
      * shortDescription, longDescription, abbreviation, usage and status for term.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -4747,36 +4460,20 @@ public Mono> partialUpdateTermWithResponseAsync(String term
     /**
      * Update the glossary term partially. So far we only supports partial updating
      * shortDescription, longDescription, abbreviation, usage and status for term.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -4958,28 +4655,14 @@ public Response partialUpdateTermWithResponse(String termId, BinaryD
 
     /**
      * Create glossary terms in bulk.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -5142,9 +4825,7 @@ public Response partialUpdateTermWithResponse(String termId, BinaryD
      *     }
      * ]
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -5325,28 +5006,14 @@ public Mono> createTermsWithResponseAsync(BinaryData body,
 
     /**
      * Create glossary terms in bulk.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
Query Parameters
NameTypeRequiredDescription
includeTermHierarchyBooleanNoWhether include term hierarchy
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -5509,9 +5176,7 @@ public Mono> createTermsWithResponseAsync(BinaryData body,
      *     }
      * ]
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -5693,40 +5358,16 @@ public Response createTermsWithResponse(BinaryData body, RequestOpti
     /**
      * List all related objects assigned with the specified term. Recommend using
      * limit/offset to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -5770,40 +5411,16 @@ public Mono> getEntitiesAssignedWithTermWithResponseAsync(S
     /**
      * List all related objects assigned with the specified term. Recommend using
      * limit/offset to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -5850,9 +5467,7 @@ public Response getEntitiesAssignedWithTermWithResponse(String termI
      * [Entities Create Or Update
      * operation](https://learn.microsoft.com/en-us/rest/api/purview/datamapdataplane/entity/bulk-create-or-update?tabs=HTTP)
      * is an alternative to assign a term to multiple entities.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -5901,9 +5516,7 @@ public Mono> assignTermToEntitiesWithResponseAsync(String termId,
      * [Entities Create Or Update
      * operation](https://learn.microsoft.com/en-us/rest/api/purview/datamapdataplane/entity/bulk-create-or-update?tabs=HTTP)
      * is an alternative to assign a term to multiple entities.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -5947,9 +5560,7 @@ public Response assignTermToEntitiesWithResponse(String termId, BinaryData
 
     /**
      * Delete the term assignment for the given list of related objects.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -5993,9 +5604,7 @@ public Mono> deleteTermAssignmentFromEntitiesWithResponseAsync(St
 
     /**
      * Delete the term assignment for the given list of related objects.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * [
      *      (Required){
@@ -6040,40 +5649,16 @@ public Response deleteTermAssignmentFromEntitiesWithResponse(String termId
     /**
      * Get all related terms for a specific term by its GUID. Limit, offset, and sort
      * parameters are currently not being enabled and won't work even they are passed.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     String (Required): [
@@ -6096,8 +5681,7 @@ public Response deleteTermAssignmentFromEntitiesWithResponse(String termId
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return all related terms for a specific term by its GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return all related terms for a specific term by its GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getRelatedTermsWithResponseAsync(String termId, RequestOptions requestOptions) {
@@ -6109,40 +5693,16 @@ public Mono> getRelatedTermsWithResponseAsync(String termId
     /**
      * Get all related terms for a specific term by its GUID. Limit, offset, and sort
      * parameters are currently not being enabled and won't work even they are passed.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     String (Required): [
@@ -6176,9 +5736,7 @@ public Response getRelatedTermsWithResponse(String termId, RequestOp
 
     /**
      * Get a specific Glossary by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -6252,9 +5810,7 @@ public Mono> getWithResponseAsync(String glossaryId, Reques
 
     /**
      * Get a specific Glossary by its GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -6327,28 +5883,14 @@ public Response getWithResponse(String glossaryId, RequestOptions re
 
     /**
      * Update the given glossary.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -6404,9 +5946,7 @@ public Response getWithResponse(String glossaryId, RequestOptions re
      *     usage: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -6482,28 +6022,14 @@ public Mono> updateWithResponseAsync(String glossaryId, Bin
 
     /**
      * Update the given glossary.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -6559,9 +6085,7 @@ public Mono> updateWithResponseAsync(String glossaryId, Bin
      *     usage: String (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -6675,40 +6199,16 @@ public Response deleteWithResponse(String glossaryId, RequestOptions reque
     /**
      * Get the categories belonging to a specific glossary. Recommend using
      * limit/offset to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -6777,8 +6277,7 @@ public Response deleteWithResponse(String glossaryId, RequestOptions reque
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the categories belonging to a specific glossary along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the categories belonging to a specific glossary along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getCategoriesWithResponseAsync(String glossaryId, RequestOptions requestOptions) {
@@ -6790,40 +6289,16 @@ public Mono> getCategoriesWithResponseAsync(String glossary
     /**
      * Get the categories belonging to a specific glossary. Recommend using
      * limit/offset to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -6903,40 +6378,16 @@ public Response getCategoriesWithResponse(String glossaryId, Request
     /**
      * Get the category headers belonging to a specific glossary. Recommend using
      * limit/offset to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -6955,8 +6406,7 @@ public Response getCategoriesWithResponse(String glossaryId, Request
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the category headers belonging to a specific glossary along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return the category headers belonging to a specific glossary along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getCategoriesHeadersWithResponseAsync(String glossaryId,
@@ -6969,40 +6419,16 @@ public Mono> getCategoriesHeadersWithResponseAsync(String g
     /**
      * Get the category headers belonging to a specific glossary. Recommend using
      * limit/offset to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -7034,14 +6460,12 @@ public Response getCategoriesHeadersWithResponse(String glossaryId,
      * Get a specific glossary with detailed information. This API is not
      * recommend.
      * 
-     * Recommend to fetch terms/categories details separately using
+     * Recommend to fetch terms/categories details separately using 
      * 
-     * GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms and
+     * GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms and 
      * 
      * GET /datamap/api/atlas/v2/glossary/{glossaryId}/categories.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -7265,8 +6689,7 @@ public Response getCategoriesHeadersWithResponse(String glossaryId,
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return a specific glossary with detailed information along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return a specific glossary with detailed information along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getDetailedWithResponseAsync(String glossaryId, RequestOptions requestOptions) {
@@ -7279,14 +6702,12 @@ public Mono> getDetailedWithResponseAsync(String glossaryId
      * Get a specific glossary with detailed information. This API is not
      * recommend.
      * 
-     * Recommend to fetch terms/categories details separately using
+     * Recommend to fetch terms/categories details separately using 
      * 
-     * GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms and
+     * GET /datamap/api/atlas/v2/glossary/{glossaryId}/terms and 
      * 
      * GET /datamap/api/atlas/v2/glossary/{glossaryId}/categories.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -7524,40 +6945,24 @@ public Response getDetailedWithResponse(String glossaryId, RequestOp
      * allowed to be updated.
      * 
      * So far we only supports partial updating
-     * shortDescription, longDescription, language and usage for glossary.
+     * shortDescription, longDescription, language and usage for glossary. 
      * 
      * Recommend
      * using 'ignoreTermsAndCategories=true' to reduce response body size.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -7637,40 +7042,24 @@ public Mono> partialUpdateWithResponseAsync(String glossary
      * allowed to be updated.
      * 
      * So far we only supports partial updating
-     * shortDescription, longDescription, language and usage for glossary.
+     * shortDescription, longDescription, language and usage for glossary. 
      * 
      * Recommend
      * using 'ignoreTermsAndCategories=true' to reduce response body size.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
Query Parameters
NameTypeRequiredDescription
ignoreTermsAndCategoriesBooleanNoWhether ignore terms and categories
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     String: String (Required)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     guid: String (Optional)
@@ -7748,40 +7137,16 @@ public Response partialUpdateWithResponse(String glossaryId, BinaryD
     /**
      * Get terms belonging to a specific glossary. Recommend using limit/offset to get
      * pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -7951,8 +7316,7 @@ public Response partialUpdateWithResponse(String glossaryId, BinaryD
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return terms belonging to a specific glossary along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return terms belonging to a specific glossary along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getTermsWithResponseAsync(String glossaryId, RequestOptions requestOptions) {
@@ -7964,40 +7328,16 @@ public Mono> getTermsWithResponseAsync(String glossaryId, R
     /**
      * Get terms belonging to a specific glossary. Recommend using limit/offset to get
      * pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -8179,40 +7519,16 @@ public Response getTermsWithResponse(String glossaryId, RequestOptio
     /**
      * Get term headers belonging to a specific glossary. Recommend using limit/offset
      * to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -8233,8 +7549,7 @@ public Response getTermsWithResponse(String glossaryId, RequestOptio
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return term headers belonging to a specific glossary along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return term headers belonging to a specific glossary along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getTermHeadersWithResponseAsync(String glossaryId,
@@ -8247,40 +7562,16 @@ public Mono> getTermHeadersWithResponseAsync(String glossar
     /**
      * Get term headers belonging to a specific glossary. Recommend using limit/offset
      * to get pagination result.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
Query Parameters
NameTypeRequiredDescription
limitIntegerNoThe page size - by default there is no paging.
offsetIntegerNoThe offset for pagination purpose.
sortStringNoThe sort order, ASC (default) or DESC.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/LineagesImpl.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/LineagesImpl.java
index 09e26a26702a..8332bb563d87 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/LineagesImpl.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/LineagesImpl.java
@@ -62,8 +62,7 @@ public PurviewDataMapServiceVersion getServiceVersion() {
     }
 
     /**
-     * The interface defining all the services for DataMapClientLineages to be used by the proxy service to perform
-     * REST calls.
+     * The interface defining all the services for DataMapClientLineages to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}/datamap/api")
     @ServiceInterface(name = "DataMapClientLineage")
@@ -133,28 +132,14 @@ Response getByUniqueAttributeSync(@HostParam("endpoint") String endp
 
     /**
      * Get lineage info of the entity specified by GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     baseEntityGuid: String (Optional)
@@ -239,15 +224,13 @@ Response getByUniqueAttributeSync(@HostParam("endpoint") String endp
      * }
* * @param guid The globally unique identifier of the entity. - * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", - * "OUTPUT", "BOTH". + * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", "OUTPUT", "BOTH". * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return lineage info of the entity specified by GUID along with {@link Response} on successful completion of - * {@link Mono}. + * @return lineage info of the entity specified by GUID along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) public Mono> getWithResponseAsync(String guid, String direction, @@ -259,28 +242,14 @@ public Mono> getWithResponseAsync(String guid, String direc /** * Get lineage info of the entity specified by GUID. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     baseEntityGuid: String (Optional)
@@ -365,8 +334,7 @@ public Mono> getWithResponseAsync(String guid, String direc
      * }
* * @param guid The globally unique identifier of the entity. - * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", - * "OUTPUT", "BOTH". + * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", "OUTPUT", "BOTH". * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -382,34 +350,15 @@ public Response getWithResponse(String guid, String direction, Reque /** * Return immediate next page lineage info about entity with pagination. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
offsetIntegerNoThe offset for pagination purpose.
limitIntegerNoThe page size - by default there is no paging.
Query Parameters
NameTypeRequiredDescription
offsetIntegerNoThe offset for pagination purpose.
limitIntegerNoThe page size - by default there is no paging.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     baseEntityGuid: String (Optional)
@@ -494,8 +443,7 @@ public Response getWithResponse(String guid, String direction, Reque
      * }
* * @param guid The globally unique identifier of the entity. - * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", - * "OUTPUT", "BOTH". + * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", "OUTPUT", "BOTH". * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -513,34 +461,15 @@ public Mono> getNextPageWithResponseAsync(String guid, Stri /** * Return immediate next page lineage info about entity with pagination. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
offsetIntegerNoThe offset for pagination purpose.
limitIntegerNoThe page size - by default there is no paging.
Query Parameters
NameTypeRequiredDescription
offsetIntegerNoThe offset for pagination purpose.
limitIntegerNoThe page size - by default there is no paging.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     baseEntityGuid: String (Optional)
@@ -625,8 +554,7 @@ public Mono> getNextPageWithResponseAsync(String guid, Stri
      * }
* * @param guid The globally unique identifier of the entity. - * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", - * "OUTPUT", "BOTH". + * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", "OUTPUT", "BOTH". * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -658,35 +586,16 @@ public Response getNextPageWithResponse(String guid, String directio * * GET * /v2/lineage/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     baseEntityGuid: String (Optional)
@@ -771,8 +680,7 @@ public Response getNextPageWithResponse(String guid, String directio
      * }
* * @param typeName The name of the type. - * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", - * "OUTPUT", "BOTH". + * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", "OUTPUT", "BOTH". * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -805,35 +713,16 @@ public Mono> getByUniqueAttributeWithResponseAsync(String t * * GET * /v2/lineage/uniqueAttribute/type/aType?attr:aTypeAttribute=someValue. - *

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * + * *
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can - * be changed to other unique attributes)
Query Parameters
NameTypeRequiredDescription
depthIntegerNoThe number of hops for lineage.
attr:qualifiedNameStringNoThe qualified name of the entity. (This is only an example. qualifiedName can + * be changed to other unique attributes)
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     baseEntityGuid: String (Optional)
@@ -918,8 +807,7 @@ public Mono> getByUniqueAttributeWithResponseAsync(String t
      * }
* * @param typeName The name of the type. - * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", - * "OUTPUT", "BOTH". + * @param direction The direction of the lineage, which could be INPUT, OUTPUT or BOTH. Allowed values: "INPUT", "OUTPUT", "BOTH". * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/MultipartFormDataHelper.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/MultipartFormDataHelper.java index 10776798e84c..4bd32c2536bf 100644 --- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/MultipartFormDataHelper.java +++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/MultipartFormDataHelper.java @@ -8,6 +8,7 @@ import com.azure.core.http.rest.RequestOptions; import com.azure.core.util.BinaryData; import com.azure.core.util.CoreUtils; + import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.SequenceInputStream; diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/RelationshipsImpl.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/RelationshipsImpl.java index cda6259b1030..6d4e17c206d0 100644 --- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/RelationshipsImpl.java +++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/RelationshipsImpl.java @@ -66,8 +66,7 @@ public PurviewDataMapServiceVersion getServiceVersion() { } /** - * The interface defining all the services for DataMapClientRelationships to be used by the proxy service to - * perform REST calls. + * The interface defining all the services for DataMapClientRelationships to be used by the proxy service to perform REST calls. */ @Host("{endpoint}/datamap/api") @ServiceInterface(name = "DataMapClientRelatio") @@ -151,9 +150,7 @@ Response deleteSync(@HostParam("endpoint") String endpoint, @PathParam("gu /** * Create a new relationship between entities. - *

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -181,9 +178,7 @@ Response deleteSync(@HostParam("endpoint") String endpoint, @PathParam("gu
      *     version: Long (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -230,9 +225,7 @@ public Mono> createWithResponseAsync(BinaryData atlasRelati
 
     /**
      * Create a new relationship between entities.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -260,9 +253,7 @@ public Mono> createWithResponseAsync(BinaryData atlasRelati
      *     version: Long (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -307,9 +298,7 @@ public Response createWithResponse(BinaryData atlasRelationship, Req
 
     /**
      * Update an existing relationship between entities.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -337,9 +326,7 @@ public Response createWithResponse(BinaryData atlasRelationship, Req
      *     version: Long (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -386,9 +373,7 @@ public Mono> updateWithResponseAsync(BinaryData atlasRelati
 
     /**
      * Update an existing relationship between entities.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -416,9 +401,7 @@ public Mono> updateWithResponseAsync(BinaryData atlasRelati
      *     version: Long (Optional)
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     attributes (Optional): {
@@ -463,28 +446,14 @@ public Response updateWithResponse(BinaryData atlasRelationship, Req
 
     /**
      * Get relationship information between entities by its GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
extendedInfoBooleanNoLimits whether includes extended information.
Query Parameters
NameTypeRequiredDescription
extendedInfoBooleanNoLimits whether includes extended information.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
@@ -575,8 +544,7 @@ public Response updateWithResponse(BinaryData atlasRelationship, Req
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return relationship information between entities by its GUID along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return relationship information between entities by its GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getWithResponseAsync(String guid, RequestOptions requestOptions) {
@@ -587,28 +555,14 @@ public Mono> getWithResponseAsync(String guid, RequestOptio
 
     /**
      * Get relationship information between entities by its GUID.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * - * + * + * + * *
Query Parameters
NameTypeRequiredDescription
extendedInfoBooleanNoLimits whether includes extended information.
Query Parameters
NameTypeRequiredDescription
extendedInfoBooleanNoLimits whether includes extended information.
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     referredEntities (Optional): {
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/TypeDefinitionsImpl.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/TypeDefinitionsImpl.java
index 136c6bce594c..a1f80aabf670 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/TypeDefinitionsImpl.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/implementation/TypeDefinitionsImpl.java
@@ -67,8 +67,7 @@ public PurviewDataMapServiceVersion getServiceVersion() {
     }
 
     /**
-     * The interface defining all the services for DataMapClientTypeDefinitions to be used by the proxy service to
-     * perform REST calls.
+     * The interface defining all the services for DataMapClientTypeDefinitions to be used by the proxy service to perform REST calls.
      */
     @Host("{endpoint}/datamap/api")
     @ServiceInterface(name = "DataMapClientTypeDef")
@@ -498,9 +497,7 @@ Response getTermTemplateByNameSync(@HostParam("endpoint") String end
 
     /**
      * Get the businessMetadata definition for the given guid.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -592,8 +589,7 @@ Response getTermTemplateByNameSync(@HostParam("endpoint") String end
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the businessMetadata definition for the given guid along with {@link Response} on successful completion
-     * of {@link Mono}.
+     * @return the businessMetadata definition for the given guid along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getBusinessMetadataByIdWithResponseAsync(String guid,
@@ -605,9 +601,7 @@ public Mono> getBusinessMetadataByIdWithResponseAsync(Strin
 
     /**
      * Get the businessMetadata definition for the given guid.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -710,9 +704,7 @@ public Response getBusinessMetadataByIdWithResponse(String guid, Req
 
     /**
      * Get the businessMetadata definition by it's name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -804,8 +796,7 @@ public Response getBusinessMetadataByIdWithResponse(String guid, Req
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the businessMetadata definition by it's name (unique) along with {@link Response} on successful
-     * completion of {@link Mono}.
+     * @return the businessMetadata definition by it's name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getBusinessMetadataByNameWithResponseAsync(String name,
@@ -817,9 +808,7 @@ public Mono> getBusinessMetadataByNameWithResponseAsync(Str
 
     /**
      * Get the businessMetadata definition by it's name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -922,9 +911,7 @@ public Response getBusinessMetadataByNameWithResponse(String name, R
 
     /**
      * Get the classification definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1025,8 +1012,7 @@ public Response getBusinessMetadataByNameWithResponse(String name, R
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the classification definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the classification definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getClassificationByIdWithResponseAsync(String guid,
@@ -1038,9 +1024,7 @@ public Mono> getClassificationByIdWithResponseAsync(String
 
     /**
      * Get the classification definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1151,9 +1135,7 @@ public Response getClassificationByIdWithResponse(String guid, Reque
 
     /**
      * Get the classification definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1254,8 +1236,7 @@ public Response getClassificationByIdWithResponse(String guid, Reque
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the classification definition by its name (unique) along with {@link Response} on successful completion
-     * of {@link Mono}.
+     * @return the classification definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getClassificationByNameWithResponseAsync(String name,
@@ -1267,9 +1248,7 @@ public Mono> getClassificationByNameWithResponseAsync(Strin
 
     /**
      * Get the classification definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1381,9 +1360,7 @@ public Response getClassificationByNameWithResponse(String name, Req
 
     /**
      * Get the Entity definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1504,8 +1481,7 @@ public Response getClassificationByNameWithResponse(String name, Req
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the Entity definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the Entity definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getEntityByIdWithResponseAsync(String guid, RequestOptions requestOptions) {
@@ -1516,9 +1492,7 @@ public Mono> getEntityByIdWithResponseAsync(String guid, Re
 
     /**
      * Get the Entity definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1649,9 +1623,7 @@ public Response getEntityByIdWithResponse(String guid, RequestOption
 
     /**
      * Get the entity definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1772,8 +1744,7 @@ public Response getEntityByIdWithResponse(String guid, RequestOption
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the entity definition by its name (unique) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the entity definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getEntityByNameWithResponseAsync(String name, RequestOptions requestOptions) {
@@ -1784,9 +1755,7 @@ public Mono> getEntityByNameWithResponseAsync(String name,
 
     /**
      * Get the entity definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1917,9 +1886,7 @@ public Response getEntityByNameWithResponse(String name, RequestOpti
 
     /**
      * Get the enum definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -1993,8 +1960,7 @@ public Response getEntityByNameWithResponse(String name, RequestOpti
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the enum definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the enum definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getEnumByIdWithResponseAsync(String guid, RequestOptions requestOptions) {
@@ -2005,9 +1971,7 @@ public Mono> getEnumByIdWithResponseAsync(String guid, Requ
 
     /**
      * Get the enum definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -2091,9 +2055,7 @@ public Response getEnumByIdWithResponse(String guid, RequestOptions
 
     /**
      * Get the enum definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -2167,8 +2129,7 @@ public Response getEnumByIdWithResponse(String guid, RequestOptions
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the enum definition by its name (unique) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the enum definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getEnumByNameWithResponseAsync(String name, RequestOptions requestOptions) {
@@ -2179,9 +2140,7 @@ public Mono> getEnumByNameWithResponseAsync(String name, Re
 
     /**
      * Get the enum definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -2265,9 +2224,7 @@ public Response getEnumByNameWithResponse(String name, RequestOption
 
     /**
      * Get the relationship definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -2370,8 +2327,7 @@ public Response getEnumByNameWithResponse(String name, RequestOption
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the relationship definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the relationship definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getRelationshipByIdWithResponseAsync(String guid, RequestOptions requestOptions) {
@@ -2382,9 +2338,7 @@ public Mono> getRelationshipByIdWithResponseAsync(String gu
 
     /**
      * Get the relationship definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -2497,9 +2451,7 @@ public Response getRelationshipByIdWithResponse(String guid, Request
 
     /**
      * Get the relationship definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -2602,8 +2554,7 @@ public Response getRelationshipByIdWithResponse(String guid, Request
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the relationship definition by its name (unique) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the relationship definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getRelationshipByNameWithResponseAsync(String name,
@@ -2615,9 +2566,7 @@ public Mono> getRelationshipByNameWithResponseAsync(String
 
     /**
      * Get the relationship definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -2730,9 +2679,7 @@ public Response getRelationshipByNameWithResponse(String name, Reque
 
     /**
      * Get the struct definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -2824,8 +2771,7 @@ public Response getRelationshipByNameWithResponse(String name, Reque
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the struct definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the struct definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getStructByIdWithResponseAsync(String guid, RequestOptions requestOptions) {
@@ -2836,9 +2782,7 @@ public Mono> getStructByIdWithResponseAsync(String guid, Re
 
     /**
      * Get the struct definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -2940,9 +2884,7 @@ public Response getStructByIdWithResponse(String guid, RequestOption
 
     /**
      * Get the struct definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -3034,8 +2976,7 @@ public Response getStructByIdWithResponse(String guid, RequestOption
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the struct definition by its name (unique) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the struct definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getStructByNameWithResponseAsync(String name, RequestOptions requestOptions) {
@@ -3046,9 +2987,7 @@ public Mono> getStructByNameWithResponseAsync(String name,
 
     /**
      * Get the struct definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -3150,9 +3089,7 @@ public Response getStructByNameWithResponse(String name, RequestOpti
 
     /**
      * Get the type definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -3295,8 +3232,7 @@ public Response getStructByNameWithResponse(String name, RequestOpti
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the type definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the type definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getByIdWithResponseAsync(String guid, RequestOptions requestOptions) {
@@ -3307,9 +3243,7 @@ public Mono> getByIdWithResponseAsync(String guid, RequestO
 
     /**
      * Get the type definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -3462,9 +3396,7 @@ public Response getByIdWithResponse(String guid, RequestOptions requ
 
     /**
      * Get the type definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -3607,8 +3539,7 @@ public Response getByIdWithResponse(String guid, RequestOptions requ
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the type definition by its name (unique) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the type definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getByNameWithResponseAsync(String name, RequestOptions requestOptions) {
@@ -3619,9 +3550,7 @@ public Mono> getByNameWithResponseAsync(String name, Reques
 
     /**
      * Get the type definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -3809,37 +3738,17 @@ public Response deleteWithResponse(String name, RequestOptions requestOpti
 
     /**
      * List all type definitions in bulk.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * + * + * - * - * - * - * - * - * - * + * when search filter type=term_template + * *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. + *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. * This is always true - * when search filter type=term_template
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", - * "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -4137,37 +4046,17 @@ public Mono> getWithResponseAsync(RequestOptions requestOpt
 
     /**
      * List all type definitions in bulk.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * + * + * - * - * - * - * - * - * - * + * when search filter type=term_template + * *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. + *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. * This is always true - * when search filter type=term_template
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", - * "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -4467,9 +4356,7 @@ public Response getWithResponse(RequestOptions requestOptions) {
      * Create all atlas type definitions in bulk, only new definitions will be
      * created.
      * Any changes to the existing definitions will be discarded.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -4750,9 +4637,7 @@ public Response getWithResponse(RequestOptions requestOptions) {
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -5054,9 +4939,7 @@ public Mono> batchCreateWithResponseAsync(BinaryData atlasT
      * Create all atlas type definitions in bulk, only new definitions will be
      * created.
      * Any changes to the existing definitions will be discarded.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -5337,9 +5220,7 @@ public Mono> batchCreateWithResponseAsync(BinaryData atlasT
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -5638,9 +5519,7 @@ public Response batchCreateWithResponse(BinaryData atlasTypesDef, Re
     /**
      * Update all types in bulk, changes detected in the type definitions would be
      * persisted.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -5921,9 +5800,7 @@ public Response batchCreateWithResponse(BinaryData atlasTypesDef, Re
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -6224,9 +6101,7 @@ public Mono> batchUpdateWithResponseAsync(BinaryData atlasT
     /**
      * Update all types in bulk, changes detected in the type definitions would be
      * persisted.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -6507,9 +6382,7 @@ public Mono> batchUpdateWithResponseAsync(BinaryData atlasT
      *     ]
      * }
      * }
- *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -6807,9 +6680,7 @@ public Response batchUpdateWithResponse(BinaryData atlasTypesDef, Re
 
     /**
      * Delete API for all types in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -7108,9 +6979,7 @@ public Mono> batchDeleteWithResponseAsync(BinaryData atlasTypesDe
 
     /**
      * Delete API for all types in bulk.
-     * 

- * Request Body Schema - *

+ *

Request Body Schema

*
{@code
      * {
      *     businessMetadataDefs (Optional): [
@@ -7408,37 +7277,17 @@ public Response batchDeleteWithResponse(BinaryData atlasTypesDef, RequestO
 
     /**
      * List all type definitions returned as a list of minimal information header.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * + * + * - * - * - * - * - * - * - * + * when search filter type=term_template + * *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. + *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. * This is always true - * when search filter type=term_template
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", - * "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -7465,37 +7314,17 @@ public Mono> getHeadersWithResponseAsync(RequestOptions req
 
     /**
      * List all type definitions returned as a list of minimal information header.
-     * 

- * Query Parameters - *

+ *

Query Parameters

* - * - * - * - * - * - * - * - * - * - * - * - * + * + * - * - * - * - * - * - * - * + * when search filter type=term_template + * *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. + *
Query Parameters
NameTypeRequiredDescription
includeTermTemplateBooleanNoWhether include termtemplatedef when return all typedefs. * This is always true - * when search filter type=term_template
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", - * "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
typeStringNoTypedef name as search filter when get typedefs. Allowed values: "PRIMITIVE", "OBJECT_ID_TYPE", "ENUM", "STRUCT", "CLASSIFICATION", "ENTITY", "ARRAY", "MAP", "RELATIONSHIP", "TERM_TEMPLATE".
* You can add these to a request with {@link RequestOptions#addQueryParam} - *

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * [
      *      (Required){
@@ -7522,9 +7351,7 @@ public Response getHeadersWithResponse(RequestOptions requestOptions
 
     /**
      * Get the term template definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -7616,8 +7443,7 @@ public Response getHeadersWithResponse(RequestOptions requestOptions
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the term template definition for the given GUID along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the term template definition for the given GUID along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getTermTemplateByIdWithResponseAsync(String guid, RequestOptions requestOptions) {
@@ -7628,9 +7454,7 @@ public Mono> getTermTemplateByIdWithResponseAsync(String gu
 
     /**
      * Get the term template definition for the given GUID.
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -7733,9 +7557,7 @@ public Response getTermTemplateByIdWithResponse(String guid, Request
 
     /**
      * Get the term template definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
@@ -7827,8 +7649,7 @@ public Response getTermTemplateByIdWithResponse(String guid, Request
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
      * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
      * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @return the term template definition by its name (unique) along with {@link Response} on successful completion of
-     * {@link Mono}.
+     * @return the term template definition by its name (unique) along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> getTermTemplateByNameWithResponseAsync(String name,
@@ -7840,9 +7661,7 @@ public Mono> getTermTemplateByNameWithResponseAsync(String
 
     /**
      * Get the term template definition by its name (unique).
-     * 

- * Response Body Schema - *

+ *

Response Body Schema

*
{@code
      * {
      *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasAttributeDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasAttributeDef.java
index 31930f51a3cf..e5e7fe6dae20 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasAttributeDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasAttributeDef.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,96 +18,83 @@
  * class that captures details of a struct-attribute.
  */
 @Fluent
-public final class AtlasAttributeDef {
+public final class AtlasAttributeDef implements JsonSerializable {
     /*
      * single-valued attribute or multi-valued attribute.
      */
     @Generated
-    @JsonProperty(value = "cardinality")
     private CardinalityValue cardinality;
 
     /*
      * An array of constraints.
      */
     @Generated
-    @JsonProperty(value = "constraints")
     private List constraints;
 
     /*
      * The default value of the attribute.
      */
     @Generated
-    @JsonProperty(value = "defaultValue")
     private String defaultValue;
 
     /*
      * The description of the attribute.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * Determines if it is included in notification.
      */
     @Generated
-    @JsonProperty(value = "includeInNotification")
     private Boolean includeInNotification;
 
     /*
      * Determines if it is indexable.
      */
     @Generated
-    @JsonProperty(value = "isIndexable")
     private Boolean isIndexable;
 
     /*
      * Determines if it is optional.
      */
     @Generated
-    @JsonProperty(value = "isOptional")
     private Boolean isOptional;
 
     /*
      * Determines if it unique.
      */
     @Generated
-    @JsonProperty(value = "isUnique")
     private Boolean isUnique;
 
     /*
      * The name of the attribute.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The options for the attribute.
      */
     @Generated
-    @JsonProperty(value = "options")
     private Map options;
 
     /*
      * The name of the type.
      */
     @Generated
-    @JsonProperty(value = "typeName")
     private String typeName;
 
     /*
      * The maximum count of the values.
      */
     @Generated
-    @JsonProperty(value = "valuesMaxCount")
     private Integer valuesMaxCount;
 
     /*
      * The minimum count of the values.
      */
     @Generated
-    @JsonProperty(value = "valuesMinCount")
     private Integer valuesMinCount;
 
     /**
@@ -398,4 +389,80 @@ public AtlasAttributeDef setValuesMinCount(Integer valuesMinCount) {
         this.valuesMinCount = valuesMinCount;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("cardinality", this.cardinality == null ? null : this.cardinality.toString());
+        jsonWriter.writeArrayField("constraints", this.constraints, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("defaultValue", this.defaultValue);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeBooleanField("includeInNotification", this.includeInNotification);
+        jsonWriter.writeBooleanField("isIndexable", this.isIndexable);
+        jsonWriter.writeBooleanField("isOptional", this.isOptional);
+        jsonWriter.writeBooleanField("isUnique", this.isUnique);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeMapField("options", this.options, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("typeName", this.typeName);
+        jsonWriter.writeNumberField("valuesMaxCount", this.valuesMaxCount);
+        jsonWriter.writeNumberField("valuesMinCount", this.valuesMinCount);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasAttributeDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasAttributeDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasAttributeDef.
+     */
+    @Generated
+    public static AtlasAttributeDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasAttributeDef deserializedAtlasAttributeDef = new AtlasAttributeDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("cardinality".equals(fieldName)) {
+                    deserializedAtlasAttributeDef.cardinality = CardinalityValue.fromString(reader.getString());
+                } else if ("constraints".equals(fieldName)) {
+                    List constraints
+                        = reader.readArray(reader1 -> AtlasConstraintDef.fromJson(reader1));
+                    deserializedAtlasAttributeDef.constraints = constraints;
+                } else if ("defaultValue".equals(fieldName)) {
+                    deserializedAtlasAttributeDef.defaultValue = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasAttributeDef.description = reader.getString();
+                } else if ("includeInNotification".equals(fieldName)) {
+                    deserializedAtlasAttributeDef.includeInNotification = reader.getNullable(JsonReader::getBoolean);
+                } else if ("isIndexable".equals(fieldName)) {
+                    deserializedAtlasAttributeDef.isIndexable = reader.getNullable(JsonReader::getBoolean);
+                } else if ("isOptional".equals(fieldName)) {
+                    deserializedAtlasAttributeDef.isOptional = reader.getNullable(JsonReader::getBoolean);
+                } else if ("isUnique".equals(fieldName)) {
+                    deserializedAtlasAttributeDef.isUnique = reader.getNullable(JsonReader::getBoolean);
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasAttributeDef.name = reader.getString();
+                } else if ("options".equals(fieldName)) {
+                    Map options = reader.readMap(reader1 -> reader1.getString());
+                    deserializedAtlasAttributeDef.options = options;
+                } else if ("typeName".equals(fieldName)) {
+                    deserializedAtlasAttributeDef.typeName = reader.getString();
+                } else if ("valuesMaxCount".equals(fieldName)) {
+                    deserializedAtlasAttributeDef.valuesMaxCount = reader.getNullable(JsonReader::getInt);
+                } else if ("valuesMinCount".equals(fieldName)) {
+                    deserializedAtlasAttributeDef.valuesMinCount = reader.getNullable(JsonReader::getInt);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasAttributeDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasBusinessMetadataDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasBusinessMetadataDef.java
index fa0f719354b2..9f8acd1fcb01 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasBusinessMetadataDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasBusinessMetadataDef.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,110 +18,95 @@
  * class that captures details of a struct-type.
  */
 @Fluent
-public final class AtlasBusinessMetadataDef {
+public final class AtlasBusinessMetadataDef implements JsonSerializable {
     /*
      * The enum of type category.
      */
     @Generated
-    @JsonProperty(value = "category")
     private TypeCategory category;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The date format.
      */
     @Generated
-    @JsonProperty(value = "dateFormatter")
     private DateFormat dateFormatter;
 
     /*
      * The description of the type definition.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The GUID of the type definition.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The name of the type definition.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The options for the type definition.
      */
     @Generated
-    @JsonProperty(value = "options")
     private Map options;
 
     /*
      * The service type.
      */
     @Generated
-    @JsonProperty(value = "serviceType")
     private String serviceType;
 
     /*
      * The version of the type.
      */
     @Generated
-    @JsonProperty(value = "typeVersion")
     private String typeVersion;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * The version of the record.
      */
     @Generated
-    @JsonProperty(value = "version")
     private Long version;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * An array of attribute definitions.
      */
     @Generated
-    @JsonProperty(value = "attributeDefs")
     private List attributeDefs;
 
     /**
@@ -456,4 +445,86 @@ public AtlasBusinessMetadataDef setAttributeDefs(List attribu
         this.attributeDefs = attributeDefs;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("category", this.category == null ? null : this.category.toString());
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeJsonField("dateFormatter", this.dateFormatter);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeMapField("options", this.options, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("serviceType", this.serviceType);
+        jsonWriter.writeStringField("typeVersion", this.typeVersion);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeNumberField("version", this.version);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeArrayField("attributeDefs", this.attributeDefs, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasBusinessMetadataDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasBusinessMetadataDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasBusinessMetadataDef.
+     */
+    @Generated
+    public static AtlasBusinessMetadataDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasBusinessMetadataDef deserializedAtlasBusinessMetadataDef = new AtlasBusinessMetadataDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("category".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.category = TypeCategory.fromString(reader.getString());
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.createdBy = reader.getString();
+                } else if ("dateFormatter".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.dateFormatter = DateFormat.fromJson(reader);
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.description = reader.getString();
+                } else if ("guid".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.guid = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.name = reader.getString();
+                } else if ("options".equals(fieldName)) {
+                    Map options = reader.readMap(reader1 -> reader1.getString());
+                    deserializedAtlasBusinessMetadataDef.options = options;
+                } else if ("serviceType".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.serviceType = reader.getString();
+                } else if ("typeVersion".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.typeVersion = reader.getString();
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.updatedBy = reader.getString();
+                } else if ("version".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.version = reader.getNullable(JsonReader::getLong);
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasBusinessMetadataDef.lastModifiedTS = reader.getString();
+                } else if ("attributeDefs".equals(fieldName)) {
+                    List attributeDefs
+                        = reader.readArray(reader1 -> AtlasAttributeDef.fromJson(reader1));
+                    deserializedAtlasBusinessMetadataDef.attributeDefs = attributeDefs;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasBusinessMetadataDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasClassification.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasClassification.java
index 20fb948e7eed..5999ef327de3 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasClassification.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasClassification.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -15,33 +19,29 @@
  * exists only when associated with an entity.
  */
 @Fluent
-public final class AtlasClassification {
+public final class AtlasClassification implements JsonSerializable {
     /*
      * The attributes of the struct.
      */
     @Generated
-    @JsonProperty(value = "attributes")
     private Map attributes;
 
     /*
      * The name of the type.
      */
     @Generated
-    @JsonProperty(value = "typeName")
     private String typeName;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * The GUID of the entity.
      */
     @Generated
-    @JsonProperty(value = "entityGuid")
     private String entityGuid;
 
     /*
@@ -49,21 +49,18 @@ public final class AtlasClassification {
      * removed.
      */
     @Generated
-    @JsonProperty(value = "entityStatus")
     private EntityStatus entityStatus;
 
     /*
      * Determines if propagations will be removed on entity deletion.
      */
     @Generated
-    @JsonProperty(value = "removePropagationsOnEntityDelete")
     private Boolean removePropagationsOnEntityDelete;
 
     /*
      * An array of time boundaries indicating validity periods.
      */
     @Generated
-    @JsonProperty(value = "validityPeriods")
     private List validityPeriods;
 
     /**
@@ -186,8 +183,7 @@ public AtlasClassification setEntityStatus(EntityStatus entityStatus) {
     }
 
     /**
-     * Get the removePropagationsOnEntityDelete property: Determines if propagations will be removed on entity
-     * deletion.
+     * Get the removePropagationsOnEntityDelete property: Determines if propagations will be removed on entity deletion.
      * 
      * @return the removePropagationsOnEntityDelete value.
      */
@@ -197,8 +193,7 @@ public Boolean isRemovePropagationsOnEntityDelete() {
     }
 
     /**
-     * Set the removePropagationsOnEntityDelete property: Determines if propagations will be removed on entity
-     * deletion.
+     * Set the removePropagationsOnEntityDelete property: Determines if propagations will be removed on entity deletion.
      * 
      * @param removePropagationsOnEntityDelete the removePropagationsOnEntityDelete value to set.
      * @return the AtlasClassification object itself.
@@ -230,4 +225,63 @@ public AtlasClassification setValidityPeriods(List validityPeriods
         this.validityPeriods = validityPeriods;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("attributes", this.attributes, (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeStringField("typeName", this.typeName);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeStringField("entityGuid", this.entityGuid);
+        jsonWriter.writeStringField("entityStatus", this.entityStatus == null ? null : this.entityStatus.toString());
+        jsonWriter.writeBooleanField("removePropagationsOnEntityDelete", this.removePropagationsOnEntityDelete);
+        jsonWriter.writeArrayField("validityPeriods", this.validityPeriods,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasClassification from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasClassification if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasClassification.
+     */
+    @Generated
+    public static AtlasClassification fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasClassification deserializedAtlasClassification = new AtlasClassification();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("attributes".equals(fieldName)) {
+                    Map attributes = reader.readMap(reader1 -> reader1.readUntyped());
+                    deserializedAtlasClassification.attributes = attributes;
+                } else if ("typeName".equals(fieldName)) {
+                    deserializedAtlasClassification.typeName = reader.getString();
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasClassification.lastModifiedTS = reader.getString();
+                } else if ("entityGuid".equals(fieldName)) {
+                    deserializedAtlasClassification.entityGuid = reader.getString();
+                } else if ("entityStatus".equals(fieldName)) {
+                    deserializedAtlasClassification.entityStatus = EntityStatus.fromString(reader.getString());
+                } else if ("removePropagationsOnEntityDelete".equals(fieldName)) {
+                    deserializedAtlasClassification.removePropagationsOnEntityDelete
+                        = reader.getNullable(JsonReader::getBoolean);
+                } else if ("validityPeriods".equals(fieldName)) {
+                    List validityPeriods = reader.readArray(reader1 -> TimeBoundary.fromJson(reader1));
+                    deserializedAtlasClassification.validityPeriods = validityPeriods;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasClassification;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasClassificationDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasClassificationDef.java
index d06734eae882..074df1ff51bc 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasClassificationDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasClassificationDef.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,110 +18,95 @@
  * class that captures details of a classification-type.
  */
 @Fluent
-public final class AtlasClassificationDef {
+public final class AtlasClassificationDef implements JsonSerializable {
     /*
      * The enum of type category.
      */
     @Generated
-    @JsonProperty(value = "category")
     private TypeCategory category;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The date format.
      */
     @Generated
-    @JsonProperty(value = "dateFormatter")
     private DateFormat dateFormatter;
 
     /*
      * The description of the type definition.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The GUID of the type definition.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The name of the type definition.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The options for the type definition.
      */
     @Generated
-    @JsonProperty(value = "options")
     private Map options;
 
     /*
      * The service type.
      */
     @Generated
-    @JsonProperty(value = "serviceType")
     private String serviceType;
 
     /*
      * The version of the type.
      */
     @Generated
-    @JsonProperty(value = "typeVersion")
     private String typeVersion;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * The version of the record.
      */
     @Generated
-    @JsonProperty(value = "version")
     private Long version;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * An array of attribute definitions.
      */
     @Generated
-    @JsonProperty(value = "attributeDefs")
     private List attributeDefs;
 
     /*
@@ -145,21 +134,18 @@ public final class AtlasClassificationDef {
      * 
      */
     @Generated
-    @JsonProperty(value = "entityTypes")
     private List entityTypes;
 
     /*
      * An array of sub types.
      */
     @Generated
-    @JsonProperty(value = "subTypes")
     private List subTypes;
 
     /*
      * An array of super types.
      */
     @Generated
-    @JsonProperty(value = "superTypes")
     private List superTypes;
 
     /**
@@ -604,4 +590,98 @@ public AtlasClassificationDef setSuperTypes(List superTypes) {
         this.superTypes = superTypes;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("category", this.category == null ? null : this.category.toString());
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeJsonField("dateFormatter", this.dateFormatter);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeMapField("options", this.options, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("serviceType", this.serviceType);
+        jsonWriter.writeStringField("typeVersion", this.typeVersion);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeNumberField("version", this.version);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeArrayField("attributeDefs", this.attributeDefs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("entityTypes", this.entityTypes, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("subTypes", this.subTypes, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("superTypes", this.superTypes, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasClassificationDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasClassificationDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasClassificationDef.
+     */
+    @Generated
+    public static AtlasClassificationDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasClassificationDef deserializedAtlasClassificationDef = new AtlasClassificationDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("category".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.category = TypeCategory.fromString(reader.getString());
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.createdBy = reader.getString();
+                } else if ("dateFormatter".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.dateFormatter = DateFormat.fromJson(reader);
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.description = reader.getString();
+                } else if ("guid".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.guid = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.name = reader.getString();
+                } else if ("options".equals(fieldName)) {
+                    Map options = reader.readMap(reader1 -> reader1.getString());
+                    deserializedAtlasClassificationDef.options = options;
+                } else if ("serviceType".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.serviceType = reader.getString();
+                } else if ("typeVersion".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.typeVersion = reader.getString();
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.updatedBy = reader.getString();
+                } else if ("version".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.version = reader.getNullable(JsonReader::getLong);
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasClassificationDef.lastModifiedTS = reader.getString();
+                } else if ("attributeDefs".equals(fieldName)) {
+                    List attributeDefs
+                        = reader.readArray(reader1 -> AtlasAttributeDef.fromJson(reader1));
+                    deserializedAtlasClassificationDef.attributeDefs = attributeDefs;
+                } else if ("entityTypes".equals(fieldName)) {
+                    List entityTypes = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasClassificationDef.entityTypes = entityTypes;
+                } else if ("subTypes".equals(fieldName)) {
+                    List subTypes = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasClassificationDef.subTypes = subTypes;
+                } else if ("superTypes".equals(fieldName)) {
+                    List superTypes = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasClassificationDef.superTypes = superTypes;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasClassificationDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasClassifications.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasClassifications.java
index 6e7c5dcd33d2..4c709ca76471 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasClassifications.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasClassifications.java
@@ -6,54 +6,52 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * REST serialization friendly list.
  */
 @Immutable
-public final class AtlasClassifications {
+public final class AtlasClassifications implements JsonSerializable {
     /*
      * An array of objects.
      */
     @Generated
-    @JsonProperty(value = "list")
     private List list;
 
     /*
      * The size of the page.
      */
     @Generated
-    @JsonProperty(value = "pageSize")
     private Integer pageSize;
 
     /*
      * The sorted by field.
      */
     @Generated
-    @JsonProperty(value = "sortBy")
     private String sortBy;
 
     /*
      * to specify whether the result should be sorted? If yes, whether asc or desc.
      */
     @Generated
-    @JsonProperty(value = "sortType")
     private SortType sortType;
 
     /*
      * The start index of the page.
      */
     @Generated
-    @JsonProperty(value = "startIndex")
     private Integer startIndex;
 
     /*
      * The total count of items.
      */
     @Generated
-    @JsonProperty(value = "totalCount")
     private Integer totalCount;
 
     /**
@@ -122,4 +120,57 @@ public Integer getStartIndex() {
     public Integer getTotalCount() {
         return this.totalCount;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("list", this.list, (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeNumberField("pageSize", this.pageSize);
+        jsonWriter.writeStringField("sortBy", this.sortBy);
+        jsonWriter.writeStringField("sortType", this.sortType == null ? null : this.sortType.toString());
+        jsonWriter.writeNumberField("startIndex", this.startIndex);
+        jsonWriter.writeNumberField("totalCount", this.totalCount);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasClassifications from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasClassifications if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasClassifications.
+     */
+    @Generated
+    public static AtlasClassifications fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasClassifications deserializedAtlasClassifications = new AtlasClassifications();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("list".equals(fieldName)) {
+                    List list = reader.readArray(reader1 -> reader1.readUntyped());
+                    deserializedAtlasClassifications.list = list;
+                } else if ("pageSize".equals(fieldName)) {
+                    deserializedAtlasClassifications.pageSize = reader.getNullable(JsonReader::getInt);
+                } else if ("sortBy".equals(fieldName)) {
+                    deserializedAtlasClassifications.sortBy = reader.getString();
+                } else if ("sortType".equals(fieldName)) {
+                    deserializedAtlasClassifications.sortType = SortType.fromString(reader.getString());
+                } else if ("startIndex".equals(fieldName)) {
+                    deserializedAtlasClassifications.startIndex = reader.getNullable(JsonReader::getInt);
+                } else if ("totalCount".equals(fieldName)) {
+                    deserializedAtlasClassifications.totalCount = reader.getNullable(JsonReader::getInt);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasClassifications;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasConstraintDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasConstraintDef.java
index b3691dcbe324..96751596329c 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasConstraintDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasConstraintDef.java
@@ -6,26 +6,28 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * class that captures details of a constraint.
  */
 @Fluent
-public final class AtlasConstraintDef {
+public final class AtlasConstraintDef implements JsonSerializable {
     /*
      * The parameters of the constraint definition.
      */
     @Generated
-    @JsonProperty(value = "params")
     private Map params;
 
     /*
      * The type of the constraint.
      */
     @Generated
-    @JsonProperty(value = "type")
     private String type;
 
     /**
@@ -78,4 +80,45 @@ public AtlasConstraintDef setType(String type) {
         this.type = type;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("params", this.params, (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeStringField("type", this.type);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasConstraintDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasConstraintDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasConstraintDef.
+     */
+    @Generated
+    public static AtlasConstraintDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasConstraintDef deserializedAtlasConstraintDef = new AtlasConstraintDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("params".equals(fieldName)) {
+                    Map params = reader.readMap(reader1 -> reader1.readUntyped());
+                    deserializedAtlasConstraintDef.params = params;
+                } else if ("type".equals(fieldName)) {
+                    deserializedAtlasConstraintDef.type = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasConstraintDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntitiesWithExtInfo.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntitiesWithExtInfo.java
index e34fdc23f7e9..44e28dd418b6 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntitiesWithExtInfo.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntitiesWithExtInfo.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -15,19 +19,17 @@
  * hive_database.
  */
 @Fluent
-public final class AtlasEntitiesWithExtInfo {
+public final class AtlasEntitiesWithExtInfo implements JsonSerializable {
     /*
      * The referred entities.
      */
     @Generated
-    @JsonProperty(value = "referredEntities")
     private Map referredEntities;
 
     /*
      * An array of entities.
      */
     @Generated
-    @JsonProperty(value = "entities")
     private List entities;
 
     /**
@@ -80,4 +82,48 @@ public AtlasEntitiesWithExtInfo setEntities(List entities) {
         this.entities = entities;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("referredEntities", this.referredEntities,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("entities", this.entities, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasEntitiesWithExtInfo from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasEntitiesWithExtInfo if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasEntitiesWithExtInfo.
+     */
+    @Generated
+    public static AtlasEntitiesWithExtInfo fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasEntitiesWithExtInfo deserializedAtlasEntitiesWithExtInfo = new AtlasEntitiesWithExtInfo();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("referredEntities".equals(fieldName)) {
+                    Map referredEntities
+                        = reader.readMap(reader1 -> AtlasEntity.fromJson(reader1));
+                    deserializedAtlasEntitiesWithExtInfo.referredEntities = referredEntities;
+                } else if ("entities".equals(fieldName)) {
+                    List entities = reader.readArray(reader1 -> AtlasEntity.fromJson(reader1));
+                    deserializedAtlasEntitiesWithExtInfo.entities = entities;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasEntitiesWithExtInfo;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntity.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntity.java
index d58d745d5a4a..f293b88b704e 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntity.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntity.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,124 +18,107 @@
  * An instance of an entity - like hive_table, hive_database.
  */
 @Fluent
-public final class AtlasEntity {
+public final class AtlasEntity implements JsonSerializable {
     /*
      * The attributes of the struct.
      */
     @Generated
-    @JsonProperty(value = "attributes")
     private Map attributes;
 
     /*
      * The name of the type.
      */
     @Generated
-    @JsonProperty(value = "typeName")
     private String typeName;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * Business attributes
      */
     @Generated
-    @JsonProperty(value = "businessAttributes")
     private Map businessAttributes;
 
     /*
      * An array of classifications.
      */
     @Generated
-    @JsonProperty(value = "classifications")
     private List classifications;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * Custom Attribute
      */
     @Generated
-    @JsonProperty(value = "customAttributes")
     private Map customAttributes;
 
     /*
      * The GUID of the entity.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The home ID of the entity.
      */
     @Generated
-    @JsonProperty(value = "homeId")
     private String homeId;
 
     /*
      * The collection ID of the entity.
      */
     @Generated
-    @JsonProperty(value = "collectionId", access = JsonProperty.Access.WRITE_ONLY)
     private String collectionId;
 
     /*
      * Whether it is a shell entity
      */
     @Generated
-    @JsonProperty(value = "isIncomplete")
     private Boolean isIncomplete;
 
     /*
      * labels
      */
     @Generated
-    @JsonProperty(value = "labels")
     private List labels;
 
     /*
      * An array of term assignment headers indicating the meanings of the entity.
      */
     @Generated
-    @JsonProperty(value = "meanings")
     private List meanings;
 
     /*
      * Used to record the provenance of an instance of an entity or relationship.
      */
     @Generated
-    @JsonProperty(value = "provenanceType")
     private Integer provenanceType;
 
     /*
      * Determines if there's a proxy.
      */
     @Generated
-    @JsonProperty(value = "proxy")
     private Boolean proxy;
 
     /*
      * The attributes of relationship.
      */
     @Generated
-    @JsonProperty(value = "relationshipAttributes")
     private Map relationshipAttributes;
 
     /*
@@ -139,35 +126,30 @@ public final class AtlasEntity {
      * removed.
      */
     @Generated
-    @JsonProperty(value = "status")
     private EntityStatus status;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * The version of the entity.
      */
     @Generated
-    @JsonProperty(value = "version")
     private Long version;
 
     /*
      * The dictionary of contacts for entities. Key could be Expert or Owner.
      */
     @Generated
-    @JsonProperty(value = "contacts")
     private Map> contacts;
 
     /**
@@ -650,4 +632,119 @@ public AtlasEntity setContacts(Map> contacts) {
         this.contacts = contacts;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("attributes", this.attributes, (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeStringField("typeName", this.typeName);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeMapField("businessAttributes", this.businessAttributes,
+            (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeArrayField("classifications", this.classifications,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeMapField("customAttributes", this.customAttributes,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("homeId", this.homeId);
+        jsonWriter.writeBooleanField("isIncomplete", this.isIncomplete);
+        jsonWriter.writeArrayField("labels", this.labels, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("meanings", this.meanings, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeNumberField("provenanceType", this.provenanceType);
+        jsonWriter.writeBooleanField("proxy", this.proxy);
+        jsonWriter.writeMapField("relationshipAttributes", this.relationshipAttributes,
+            (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeNumberField("version", this.version);
+        jsonWriter.writeMapField("contacts", this.contacts,
+            (writer, element) -> writer.writeArray(element, (writer1, element1) -> writer1.writeJson(element1)));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasEntity from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasEntity if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasEntity.
+     */
+    @Generated
+    public static AtlasEntity fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasEntity deserializedAtlasEntity = new AtlasEntity();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("attributes".equals(fieldName)) {
+                    Map attributes = reader.readMap(reader1 -> reader1.readUntyped());
+                    deserializedAtlasEntity.attributes = attributes;
+                } else if ("typeName".equals(fieldName)) {
+                    deserializedAtlasEntity.typeName = reader.getString();
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasEntity.lastModifiedTS = reader.getString();
+                } else if ("businessAttributes".equals(fieldName)) {
+                    Map businessAttributes = reader.readMap(reader1 -> reader1.readUntyped());
+                    deserializedAtlasEntity.businessAttributes = businessAttributes;
+                } else if ("classifications".equals(fieldName)) {
+                    List classifications
+                        = reader.readArray(reader1 -> AtlasClassification.fromJson(reader1));
+                    deserializedAtlasEntity.classifications = classifications;
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasEntity.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasEntity.createdBy = reader.getString();
+                } else if ("customAttributes".equals(fieldName)) {
+                    Map customAttributes = reader.readMap(reader1 -> reader1.getString());
+                    deserializedAtlasEntity.customAttributes = customAttributes;
+                } else if ("guid".equals(fieldName)) {
+                    deserializedAtlasEntity.guid = reader.getString();
+                } else if ("homeId".equals(fieldName)) {
+                    deserializedAtlasEntity.homeId = reader.getString();
+                } else if ("collectionId".equals(fieldName)) {
+                    deserializedAtlasEntity.collectionId = reader.getString();
+                } else if ("isIncomplete".equals(fieldName)) {
+                    deserializedAtlasEntity.isIncomplete = reader.getNullable(JsonReader::getBoolean);
+                } else if ("labels".equals(fieldName)) {
+                    List labels = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasEntity.labels = labels;
+                } else if ("meanings".equals(fieldName)) {
+                    List meanings
+                        = reader.readArray(reader1 -> AtlasTermAssignmentHeader.fromJson(reader1));
+                    deserializedAtlasEntity.meanings = meanings;
+                } else if ("provenanceType".equals(fieldName)) {
+                    deserializedAtlasEntity.provenanceType = reader.getNullable(JsonReader::getInt);
+                } else if ("proxy".equals(fieldName)) {
+                    deserializedAtlasEntity.proxy = reader.getNullable(JsonReader::getBoolean);
+                } else if ("relationshipAttributes".equals(fieldName)) {
+                    Map relationshipAttributes = reader.readMap(reader1 -> reader1.readUntyped());
+                    deserializedAtlasEntity.relationshipAttributes = relationshipAttributes;
+                } else if ("status".equals(fieldName)) {
+                    deserializedAtlasEntity.status = EntityStatus.fromString(reader.getString());
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasEntity.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasEntity.updatedBy = reader.getString();
+                } else if ("version".equals(fieldName)) {
+                    deserializedAtlasEntity.version = reader.getNullable(JsonReader::getLong);
+                } else if ("contacts".equals(fieldName)) {
+                    Map> contacts
+                        = reader.readMap(reader1 -> reader1.readArray(reader2 -> ContactInfo.fromJson(reader2)));
+                    deserializedAtlasEntity.contacts = contacts;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasEntity;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityDef.java
index 1a026e1395fd..529620622c14 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityDef.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,131 +18,113 @@
  * class that captures details of a entity-type.
  */
 @Fluent
-public final class AtlasEntityDef {
+public final class AtlasEntityDef implements JsonSerializable {
     /*
      * The enum of type category.
      */
     @Generated
-    @JsonProperty(value = "category")
     private TypeCategory category;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The date format.
      */
     @Generated
-    @JsonProperty(value = "dateFormatter")
     private DateFormat dateFormatter;
 
     /*
      * The description of the type definition.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The GUID of the type definition.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The name of the type definition.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The options for the type definition.
      */
     @Generated
-    @JsonProperty(value = "options")
     private Map options;
 
     /*
      * The service type.
      */
     @Generated
-    @JsonProperty(value = "serviceType")
     private String serviceType;
 
     /*
      * The version of the type.
      */
     @Generated
-    @JsonProperty(value = "typeVersion")
     private String typeVersion;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * The version of the record.
      */
     @Generated
-    @JsonProperty(value = "version")
     private Long version;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * An array of attribute definitions.
      */
     @Generated
-    @JsonProperty(value = "attributeDefs")
     private List attributeDefs;
 
     /*
      * An array of sub types.
      */
     @Generated
-    @JsonProperty(value = "subTypes")
     private List subTypes;
 
     /*
      * An array of super types.
      */
     @Generated
-    @JsonProperty(value = "superTypes")
     private List superTypes;
 
     /*
      * An array of relationship attributes.
      */
     @Generated
-    @JsonProperty(value = "relationshipAttributeDefs")
     private List relationshipAttributeDefs;
 
     /**
@@ -543,4 +529,100 @@ public AtlasEntityDef setRelationshipAttributeDefs(List writer.writeString(element));
+        jsonWriter.writeStringField("serviceType", this.serviceType);
+        jsonWriter.writeStringField("typeVersion", this.typeVersion);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeNumberField("version", this.version);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeArrayField("attributeDefs", this.attributeDefs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("subTypes", this.subTypes, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("superTypes", this.superTypes, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("relationshipAttributeDefs", this.relationshipAttributeDefs,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasEntityDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasEntityDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasEntityDef.
+     */
+    @Generated
+    public static AtlasEntityDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasEntityDef deserializedAtlasEntityDef = new AtlasEntityDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("category".equals(fieldName)) {
+                    deserializedAtlasEntityDef.category = TypeCategory.fromString(reader.getString());
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasEntityDef.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasEntityDef.createdBy = reader.getString();
+                } else if ("dateFormatter".equals(fieldName)) {
+                    deserializedAtlasEntityDef.dateFormatter = DateFormat.fromJson(reader);
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasEntityDef.description = reader.getString();
+                } else if ("guid".equals(fieldName)) {
+                    deserializedAtlasEntityDef.guid = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasEntityDef.name = reader.getString();
+                } else if ("options".equals(fieldName)) {
+                    Map options = reader.readMap(reader1 -> reader1.getString());
+                    deserializedAtlasEntityDef.options = options;
+                } else if ("serviceType".equals(fieldName)) {
+                    deserializedAtlasEntityDef.serviceType = reader.getString();
+                } else if ("typeVersion".equals(fieldName)) {
+                    deserializedAtlasEntityDef.typeVersion = reader.getString();
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasEntityDef.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasEntityDef.updatedBy = reader.getString();
+                } else if ("version".equals(fieldName)) {
+                    deserializedAtlasEntityDef.version = reader.getNullable(JsonReader::getLong);
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasEntityDef.lastModifiedTS = reader.getString();
+                } else if ("attributeDefs".equals(fieldName)) {
+                    List attributeDefs
+                        = reader.readArray(reader1 -> AtlasAttributeDef.fromJson(reader1));
+                    deserializedAtlasEntityDef.attributeDefs = attributeDefs;
+                } else if ("subTypes".equals(fieldName)) {
+                    List subTypes = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasEntityDef.subTypes = subTypes;
+                } else if ("superTypes".equals(fieldName)) {
+                    List superTypes = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasEntityDef.superTypes = superTypes;
+                } else if ("relationshipAttributeDefs".equals(fieldName)) {
+                    List relationshipAttributeDefs
+                        = reader.readArray(reader1 -> AtlasRelationshipAttributeDef.fromJson(reader1));
+                    deserializedAtlasEntityDef.relationshipAttributeDefs = relationshipAttributeDefs;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasEntityDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityHeader.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityHeader.java
index 86dc71f9271e..5fef78d0d145 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityHeader.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityHeader.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,82 +18,71 @@
  * An instance of an entity - like hive_table, hive_database.
  */
 @Fluent
-public final class AtlasEntityHeader {
+public final class AtlasEntityHeader implements JsonSerializable {
     /*
      * The attributes of the struct.
      */
     @Generated
-    @JsonProperty(value = "attributes")
     private Map attributes;
 
     /*
      * The name of the type.
      */
     @Generated
-    @JsonProperty(value = "typeName")
     private String typeName;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * An array of classification names.
      */
     @Generated
-    @JsonProperty(value = "classificationNames")
     private List classificationNames;
 
     /*
      * An array of classifications.
      */
     @Generated
-    @JsonProperty(value = "classifications")
     private List classifications;
 
     /*
      * The display text.
      */
     @Generated
-    @JsonProperty(value = "displayText")
     private String displayText;
 
     /*
      * The GUID of the record.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * Whether it is a shell entity
      */
     @Generated
-    @JsonProperty(value = "isIncomplete")
     private Boolean isIncomplete;
 
     /*
      * labels
      */
     @Generated
-    @JsonProperty(value = "labels")
     private List labels;
 
     /*
      * An array of meanings.
      */
     @Generated
-    @JsonProperty(value = "meaningNames")
     private List meaningNames;
 
     /*
      * An array of term assignment headers.
      */
     @Generated
-    @JsonProperty(value = "meanings")
     private List meanings;
 
     /*
@@ -97,7 +90,6 @@ public final class AtlasEntityHeader {
      * removed.
      */
     @Generated
-    @JsonProperty(value = "status")
     private EntityStatus status;
 
     /**
@@ -372,4 +364,84 @@ public AtlasEntityHeader setStatus(EntityStatus status) {
         this.status = status;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("attributes", this.attributes, (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeStringField("typeName", this.typeName);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeArrayField("classificationNames", this.classificationNames,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("classifications", this.classifications,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("displayText", this.displayText);
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeBooleanField("isIncomplete", this.isIncomplete);
+        jsonWriter.writeArrayField("labels", this.labels, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("meaningNames", this.meaningNames, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("meanings", this.meanings, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasEntityHeader from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasEntityHeader if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasEntityHeader.
+     */
+    @Generated
+    public static AtlasEntityHeader fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasEntityHeader deserializedAtlasEntityHeader = new AtlasEntityHeader();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("attributes".equals(fieldName)) {
+                    Map attributes = reader.readMap(reader1 -> reader1.readUntyped());
+                    deserializedAtlasEntityHeader.attributes = attributes;
+                } else if ("typeName".equals(fieldName)) {
+                    deserializedAtlasEntityHeader.typeName = reader.getString();
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasEntityHeader.lastModifiedTS = reader.getString();
+                } else if ("classificationNames".equals(fieldName)) {
+                    List classificationNames = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasEntityHeader.classificationNames = classificationNames;
+                } else if ("classifications".equals(fieldName)) {
+                    List classifications
+                        = reader.readArray(reader1 -> AtlasClassification.fromJson(reader1));
+                    deserializedAtlasEntityHeader.classifications = classifications;
+                } else if ("displayText".equals(fieldName)) {
+                    deserializedAtlasEntityHeader.displayText = reader.getString();
+                } else if ("guid".equals(fieldName)) {
+                    deserializedAtlasEntityHeader.guid = reader.getString();
+                } else if ("isIncomplete".equals(fieldName)) {
+                    deserializedAtlasEntityHeader.isIncomplete = reader.getNullable(JsonReader::getBoolean);
+                } else if ("labels".equals(fieldName)) {
+                    List labels = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasEntityHeader.labels = labels;
+                } else if ("meaningNames".equals(fieldName)) {
+                    List meaningNames = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasEntityHeader.meaningNames = meaningNames;
+                } else if ("meanings".equals(fieldName)) {
+                    List meanings
+                        = reader.readArray(reader1 -> AtlasTermAssignmentHeader.fromJson(reader1));
+                    deserializedAtlasEntityHeader.meanings = meanings;
+                } else if ("status".equals(fieldName)) {
+                    deserializedAtlasEntityHeader.status = EntityStatus.fromString(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasEntityHeader;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityHeaders.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityHeaders.java
index 53654501cb48..3ceafe83bc41 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityHeaders.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityHeaders.java
@@ -6,19 +6,22 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * An instance of an entity header map.
  */
 @Fluent
-public final class AtlasEntityHeaders {
+public final class AtlasEntityHeaders implements JsonSerializable {
     /*
      * The description of the guid header map,
      */
     @Generated
-    @JsonProperty(value = "guidHeaderMap")
     private Map guidHeaderMap;
 
     /**
@@ -49,4 +52,43 @@ public AtlasEntityHeaders setGuidHeaderMap(Map guidHe
         this.guidHeaderMap = guidHeaderMap;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("guidHeaderMap", this.guidHeaderMap, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasEntityHeaders from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasEntityHeaders if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasEntityHeaders.
+     */
+    @Generated
+    public static AtlasEntityHeaders fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasEntityHeaders deserializedAtlasEntityHeaders = new AtlasEntityHeaders();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("guidHeaderMap".equals(fieldName)) {
+                    Map guidHeaderMap
+                        = reader.readMap(reader1 -> AtlasEntityHeader.fromJson(reader1));
+                    deserializedAtlasEntityHeaders.guidHeaderMap = guidHeaderMap;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasEntityHeaders;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityWithExtInfo.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityWithExtInfo.java
index f4c0ae6b99b5..5e82a369d5b6 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityWithExtInfo.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEntityWithExtInfo.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
@@ -14,19 +18,17 @@
  * hive_database.
  */
 @Fluent
-public final class AtlasEntityWithExtInfo {
+public final class AtlasEntityWithExtInfo implements JsonSerializable {
     /*
      * The referred entities.
      */
     @Generated
-    @JsonProperty(value = "referredEntities")
     private Map referredEntities;
 
     /*
      * An instance of an entity - like hive_table, hive_database.
      */
     @Generated
-    @JsonProperty(value = "entity")
     private AtlasEntity entity;
 
     /**
@@ -79,4 +81,47 @@ public AtlasEntityWithExtInfo setEntity(AtlasEntity entity) {
         this.entity = entity;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("referredEntities", this.referredEntities,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("entity", this.entity);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasEntityWithExtInfo from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasEntityWithExtInfo if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasEntityWithExtInfo.
+     */
+    @Generated
+    public static AtlasEntityWithExtInfo fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasEntityWithExtInfo deserializedAtlasEntityWithExtInfo = new AtlasEntityWithExtInfo();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("referredEntities".equals(fieldName)) {
+                    Map referredEntities
+                        = reader.readMap(reader1 -> AtlasEntity.fromJson(reader1));
+                    deserializedAtlasEntityWithExtInfo.referredEntities = referredEntities;
+                } else if ("entity".equals(fieldName)) {
+                    deserializedAtlasEntityWithExtInfo.entity = AtlasEntity.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasEntityWithExtInfo;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEnumDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEnumDef.java
index fd72c80348b2..b2e040565b6b 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEnumDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEnumDef.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,117 +18,101 @@
  * class that captures details of an enum-type.
  */
 @Fluent
-public final class AtlasEnumDef {
+public final class AtlasEnumDef implements JsonSerializable {
     /*
      * The enum of type category.
      */
     @Generated
-    @JsonProperty(value = "category")
     private TypeCategory category;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The date format.
      */
     @Generated
-    @JsonProperty(value = "dateFormatter")
     private DateFormat dateFormatter;
 
     /*
      * The description of the type definition.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The GUID of the type definition.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The name of the type definition.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The options for the type definition.
      */
     @Generated
-    @JsonProperty(value = "options")
     private Map options;
 
     /*
      * The service type.
      */
     @Generated
-    @JsonProperty(value = "serviceType")
     private String serviceType;
 
     /*
      * The version of the type.
      */
     @Generated
-    @JsonProperty(value = "typeVersion")
     private String typeVersion;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * The version of the record.
      */
     @Generated
-    @JsonProperty(value = "version")
     private Long version;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * The default value.
      */
     @Generated
-    @JsonProperty(value = "defaultValue")
     private String defaultValue;
 
     /*
      * An array of enum element definitions.
      */
     @Generated
-    @JsonProperty(value = "elementDefs")
     private List elementDefs;
 
     /**
@@ -485,4 +473,89 @@ public AtlasEnumDef setElementDefs(List elementDefs) {
         this.elementDefs = elementDefs;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("category", this.category == null ? null : this.category.toString());
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeJsonField("dateFormatter", this.dateFormatter);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeMapField("options", this.options, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("serviceType", this.serviceType);
+        jsonWriter.writeStringField("typeVersion", this.typeVersion);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeNumberField("version", this.version);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeStringField("defaultValue", this.defaultValue);
+        jsonWriter.writeArrayField("elementDefs", this.elementDefs, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasEnumDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasEnumDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasEnumDef.
+     */
+    @Generated
+    public static AtlasEnumDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasEnumDef deserializedAtlasEnumDef = new AtlasEnumDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("category".equals(fieldName)) {
+                    deserializedAtlasEnumDef.category = TypeCategory.fromString(reader.getString());
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasEnumDef.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasEnumDef.createdBy = reader.getString();
+                } else if ("dateFormatter".equals(fieldName)) {
+                    deserializedAtlasEnumDef.dateFormatter = DateFormat.fromJson(reader);
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasEnumDef.description = reader.getString();
+                } else if ("guid".equals(fieldName)) {
+                    deserializedAtlasEnumDef.guid = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasEnumDef.name = reader.getString();
+                } else if ("options".equals(fieldName)) {
+                    Map options = reader.readMap(reader1 -> reader1.getString());
+                    deserializedAtlasEnumDef.options = options;
+                } else if ("serviceType".equals(fieldName)) {
+                    deserializedAtlasEnumDef.serviceType = reader.getString();
+                } else if ("typeVersion".equals(fieldName)) {
+                    deserializedAtlasEnumDef.typeVersion = reader.getString();
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasEnumDef.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasEnumDef.updatedBy = reader.getString();
+                } else if ("version".equals(fieldName)) {
+                    deserializedAtlasEnumDef.version = reader.getNullable(JsonReader::getLong);
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasEnumDef.lastModifiedTS = reader.getString();
+                } else if ("defaultValue".equals(fieldName)) {
+                    deserializedAtlasEnumDef.defaultValue = reader.getString();
+                } else if ("elementDefs".equals(fieldName)) {
+                    List elementDefs
+                        = reader.readArray(reader1 -> AtlasEnumElementDef.fromJson(reader1));
+                    deserializedAtlasEnumDef.elementDefs = elementDefs;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasEnumDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEnumElementDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEnumElementDef.java
index 99543f7e3294..644a9bf38977 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEnumElementDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasEnumElementDef.java
@@ -6,32 +6,33 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * class that captures details of an enum-element.
  */
 @Fluent
-public final class AtlasEnumElementDef {
+public final class AtlasEnumElementDef implements JsonSerializable {
     /*
      * The description of the enum element definition.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The ordinal of the enum element definition.
      */
     @Generated
-    @JsonProperty(value = "ordinal")
     private Integer ordinal;
 
     /*
      * The value of the enum element definition.
      */
     @Generated
-    @JsonProperty(value = "value")
     private String value;
 
     /**
@@ -106,4 +107,47 @@ public AtlasEnumElementDef setValue(String value) {
         this.value = value;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeNumberField("ordinal", this.ordinal);
+        jsonWriter.writeStringField("value", this.value);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasEnumElementDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasEnumElementDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasEnumElementDef.
+     */
+    @Generated
+    public static AtlasEnumElementDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasEnumElementDef deserializedAtlasEnumElementDef = new AtlasEnumElementDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("description".equals(fieldName)) {
+                    deserializedAtlasEnumElementDef.description = reader.getString();
+                } else if ("ordinal".equals(fieldName)) {
+                    deserializedAtlasEnumElementDef.ordinal = reader.getNullable(JsonReader::getInt);
+                } else if ("value".equals(fieldName)) {
+                    deserializedAtlasEnumElementDef.value = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasEnumElementDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossary.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossary.java
index 09813d2031b1..db6d09fa242e 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossary.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossary.java
@@ -6,117 +6,106 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The glossary object.
  */
 @Fluent
-public final class AtlasGlossary {
+public final class AtlasGlossary implements JsonSerializable {
     /*
      * The GUID of the object.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * An array of classifications.
      */
     @Generated
-    @JsonProperty(value = "classifications")
     private List classifications;
 
     /*
      * The long version description.
      */
     @Generated
-    @JsonProperty(value = "longDescription")
     private String longDescription;
 
     /*
      * The name of the glossary object.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The qualified name of the glossary object.
      */
     @Generated
-    @JsonProperty(value = "qualifiedName")
     private String qualifiedName;
 
     /*
      * The short version of description.
      */
     @Generated
-    @JsonProperty(value = "shortDescription")
     private String shortDescription;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * An array of categories.
      */
     @Generated
-    @JsonProperty(value = "categories")
     private List categories;
 
     /*
      * The language of the glossary.
      */
     @Generated
-    @JsonProperty(value = "language")
     private String language;
 
     /*
      * An array of related term headers.
      */
     @Generated
-    @JsonProperty(value = "terms")
     private List terms;
 
     /*
      * The usage of the glossary.
      */
     @Generated
-    @JsonProperty(value = "usage")
     private String usage;
 
     /**
@@ -455,4 +444,90 @@ public AtlasGlossary setUsage(String usage) {
         this.usage = usage;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeArrayField("classifications", this.classifications,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("longDescription", this.longDescription);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("qualifiedName", this.qualifiedName);
+        jsonWriter.writeStringField("shortDescription", this.shortDescription);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeArrayField("categories", this.categories, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("language", this.language);
+        jsonWriter.writeArrayField("terms", this.terms, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("usage", this.usage);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasGlossary from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasGlossary if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasGlossary.
+     */
+    @Generated
+    public static AtlasGlossary fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasGlossary deserializedAtlasGlossary = new AtlasGlossary();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("guid".equals(fieldName)) {
+                    deserializedAtlasGlossary.guid = reader.getString();
+                } else if ("classifications".equals(fieldName)) {
+                    List classifications
+                        = reader.readArray(reader1 -> AtlasClassification.fromJson(reader1));
+                    deserializedAtlasGlossary.classifications = classifications;
+                } else if ("longDescription".equals(fieldName)) {
+                    deserializedAtlasGlossary.longDescription = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasGlossary.name = reader.getString();
+                } else if ("qualifiedName".equals(fieldName)) {
+                    deserializedAtlasGlossary.qualifiedName = reader.getString();
+                } else if ("shortDescription".equals(fieldName)) {
+                    deserializedAtlasGlossary.shortDescription = reader.getString();
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasGlossary.lastModifiedTS = reader.getString();
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasGlossary.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasGlossary.createdBy = reader.getString();
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasGlossary.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasGlossary.updatedBy = reader.getString();
+                } else if ("categories".equals(fieldName)) {
+                    List categories
+                        = reader.readArray(reader1 -> AtlasRelatedCategoryHeader.fromJson(reader1));
+                    deserializedAtlasGlossary.categories = categories;
+                } else if ("language".equals(fieldName)) {
+                    deserializedAtlasGlossary.language = reader.getString();
+                } else if ("terms".equals(fieldName)) {
+                    List terms
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossary.terms = terms;
+                } else if ("usage".equals(fieldName)) {
+                    deserializedAtlasGlossary.usage = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasGlossary;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryCategory.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryCategory.java
index 459b150ca115..03ed9f22bb80 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryCategory.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryCategory.java
@@ -6,117 +6,106 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The glossary category.
  */
 @Fluent
-public final class AtlasGlossaryCategory {
+public final class AtlasGlossaryCategory implements JsonSerializable {
     /*
      * The GUID of the object.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * An array of classifications.
      */
     @Generated
-    @JsonProperty(value = "classifications")
     private List classifications;
 
     /*
      * The long version description.
      */
     @Generated
-    @JsonProperty(value = "longDescription")
     private String longDescription;
 
     /*
      * The name of the glossary object.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The qualified name of the glossary object.
      */
     @Generated
-    @JsonProperty(value = "qualifiedName")
     private String qualifiedName;
 
     /*
      * The short version of description.
      */
     @Generated
-    @JsonProperty(value = "shortDescription")
     private String shortDescription;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * The glossary header with basic information.
      */
     @Generated
-    @JsonProperty(value = "anchor")
     private AtlasGlossaryHeader anchor;
 
     /*
      * An array of children categories.
      */
     @Generated
-    @JsonProperty(value = "childrenCategories")
     private List childrenCategories;
 
     /*
      * The header of the related category.
      */
     @Generated
-    @JsonProperty(value = "parentCategory")
     private AtlasRelatedCategoryHeader parentCategory;
 
     /*
      * An array of related term headers.
      */
     @Generated
-    @JsonProperty(value = "terms")
     private List terms;
 
     /**
@@ -455,4 +444,91 @@ public AtlasGlossaryCategory setTerms(List terms) {
         this.terms = terms;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeArrayField("classifications", this.classifications,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("longDescription", this.longDescription);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("qualifiedName", this.qualifiedName);
+        jsonWriter.writeStringField("shortDescription", this.shortDescription);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeJsonField("anchor", this.anchor);
+        jsonWriter.writeArrayField("childrenCategories", this.childrenCategories,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("parentCategory", this.parentCategory);
+        jsonWriter.writeArrayField("terms", this.terms, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasGlossaryCategory from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasGlossaryCategory if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasGlossaryCategory.
+     */
+    @Generated
+    public static AtlasGlossaryCategory fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasGlossaryCategory deserializedAtlasGlossaryCategory = new AtlasGlossaryCategory();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("guid".equals(fieldName)) {
+                    deserializedAtlasGlossaryCategory.guid = reader.getString();
+                } else if ("classifications".equals(fieldName)) {
+                    List classifications
+                        = reader.readArray(reader1 -> AtlasClassification.fromJson(reader1));
+                    deserializedAtlasGlossaryCategory.classifications = classifications;
+                } else if ("longDescription".equals(fieldName)) {
+                    deserializedAtlasGlossaryCategory.longDescription = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasGlossaryCategory.name = reader.getString();
+                } else if ("qualifiedName".equals(fieldName)) {
+                    deserializedAtlasGlossaryCategory.qualifiedName = reader.getString();
+                } else if ("shortDescription".equals(fieldName)) {
+                    deserializedAtlasGlossaryCategory.shortDescription = reader.getString();
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasGlossaryCategory.lastModifiedTS = reader.getString();
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasGlossaryCategory.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasGlossaryCategory.createdBy = reader.getString();
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasGlossaryCategory.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasGlossaryCategory.updatedBy = reader.getString();
+                } else if ("anchor".equals(fieldName)) {
+                    deserializedAtlasGlossaryCategory.anchor = AtlasGlossaryHeader.fromJson(reader);
+                } else if ("childrenCategories".equals(fieldName)) {
+                    List childrenCategories
+                        = reader.readArray(reader1 -> AtlasRelatedCategoryHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryCategory.childrenCategories = childrenCategories;
+                } else if ("parentCategory".equals(fieldName)) {
+                    deserializedAtlasGlossaryCategory.parentCategory = AtlasRelatedCategoryHeader.fromJson(reader);
+                } else if ("terms".equals(fieldName)) {
+                    List terms
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryCategory.terms = terms;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasGlossaryCategory;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryExtInfo.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryExtInfo.java
index 394ad9d56b5d..746092cf7738 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryExtInfo.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryExtInfo.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,124 +18,107 @@
  * The extended information of glossary.
  */
 @Immutable
-public final class AtlasGlossaryExtInfo {
+public final class AtlasGlossaryExtInfo implements JsonSerializable {
     /*
      * The GUID of the object.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * An array of classifications.
      */
     @Generated
-    @JsonProperty(value = "classifications")
     private List classifications;
 
     /*
      * The long version description.
      */
     @Generated
-    @JsonProperty(value = "longDescription")
     private String longDescription;
 
     /*
      * The name of the glossary object.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The qualified name of the glossary object.
      */
     @Generated
-    @JsonProperty(value = "qualifiedName")
     private String qualifiedName;
 
     /*
      * The short version of description.
      */
     @Generated
-    @JsonProperty(value = "shortDescription")
     private String shortDescription;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * An array of categories.
      */
     @Generated
-    @JsonProperty(value = "categories")
     private List categories;
 
     /*
      * The language of the glossary.
      */
     @Generated
-    @JsonProperty(value = "language")
     private String language;
 
     /*
      * An array of related term headers.
      */
     @Generated
-    @JsonProperty(value = "terms")
     private List terms;
 
     /*
      * The usage of the glossary.
      */
     @Generated
-    @JsonProperty(value = "usage")
     private String usage;
 
     /*
      * The glossary category information.
      */
     @Generated
-    @JsonProperty(value = "categoryInfo")
     private Map categoryInfo;
 
     /*
      * The glossary term information.
      */
     @Generated
-    @JsonProperty(value = "termInfo")
     private Map termInfo;
 
     /**
@@ -310,4 +297,100 @@ public Map getCategoryInfo() {
     public Map getTermInfo() {
         return this.termInfo;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeArrayField("classifications", this.classifications,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("longDescription", this.longDescription);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("qualifiedName", this.qualifiedName);
+        jsonWriter.writeStringField("shortDescription", this.shortDescription);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeArrayField("categories", this.categories, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("language", this.language);
+        jsonWriter.writeArrayField("terms", this.terms, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("usage", this.usage);
+        jsonWriter.writeMapField("categoryInfo", this.categoryInfo, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeMapField("termInfo", this.termInfo, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasGlossaryExtInfo from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasGlossaryExtInfo if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasGlossaryExtInfo.
+     */
+    @Generated
+    public static AtlasGlossaryExtInfo fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasGlossaryExtInfo deserializedAtlasGlossaryExtInfo = new AtlasGlossaryExtInfo();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("guid".equals(fieldName)) {
+                    deserializedAtlasGlossaryExtInfo.guid = reader.getString();
+                } else if ("classifications".equals(fieldName)) {
+                    List classifications
+                        = reader.readArray(reader1 -> AtlasClassification.fromJson(reader1));
+                    deserializedAtlasGlossaryExtInfo.classifications = classifications;
+                } else if ("longDescription".equals(fieldName)) {
+                    deserializedAtlasGlossaryExtInfo.longDescription = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasGlossaryExtInfo.name = reader.getString();
+                } else if ("qualifiedName".equals(fieldName)) {
+                    deserializedAtlasGlossaryExtInfo.qualifiedName = reader.getString();
+                } else if ("shortDescription".equals(fieldName)) {
+                    deserializedAtlasGlossaryExtInfo.shortDescription = reader.getString();
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasGlossaryExtInfo.lastModifiedTS = reader.getString();
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasGlossaryExtInfo.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasGlossaryExtInfo.createdBy = reader.getString();
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasGlossaryExtInfo.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasGlossaryExtInfo.updatedBy = reader.getString();
+                } else if ("categories".equals(fieldName)) {
+                    List categories
+                        = reader.readArray(reader1 -> AtlasRelatedCategoryHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryExtInfo.categories = categories;
+                } else if ("language".equals(fieldName)) {
+                    deserializedAtlasGlossaryExtInfo.language = reader.getString();
+                } else if ("terms".equals(fieldName)) {
+                    List terms
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryExtInfo.terms = terms;
+                } else if ("usage".equals(fieldName)) {
+                    deserializedAtlasGlossaryExtInfo.usage = reader.getString();
+                } else if ("categoryInfo".equals(fieldName)) {
+                    Map categoryInfo
+                        = reader.readMap(reader1 -> AtlasGlossaryCategory.fromJson(reader1));
+                    deserializedAtlasGlossaryExtInfo.categoryInfo = categoryInfo;
+                } else if ("termInfo".equals(fieldName)) {
+                    Map termInfo
+                        = reader.readMap(reader1 -> AtlasGlossaryTerm.fromJson(reader1));
+                    deserializedAtlasGlossaryExtInfo.termInfo = termInfo;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasGlossaryExtInfo;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryHeader.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryHeader.java
index 2e534c3aa4f8..6eaa3d97de53 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryHeader.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryHeader.java
@@ -6,32 +6,33 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The glossary header with basic information.
  */
 @Fluent
-public final class AtlasGlossaryHeader {
+public final class AtlasGlossaryHeader implements JsonSerializable {
     /*
      * The display text.
      */
     @Generated
-    @JsonProperty(value = "displayText")
     private String displayText;
 
     /*
      * The GUID of the glossary.
      */
     @Generated
-    @JsonProperty(value = "glossaryGuid")
     private String glossaryGuid;
 
     /*
      * The GUID of the relationship.
      */
     @Generated
-    @JsonProperty(value = "relationGuid")
     private String relationGuid;
 
     /**
@@ -106,4 +107,47 @@ public AtlasGlossaryHeader setRelationGuid(String relationGuid) {
         this.relationGuid = relationGuid;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("displayText", this.displayText);
+        jsonWriter.writeStringField("glossaryGuid", this.glossaryGuid);
+        jsonWriter.writeStringField("relationGuid", this.relationGuid);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasGlossaryHeader from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasGlossaryHeader if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasGlossaryHeader.
+     */
+    @Generated
+    public static AtlasGlossaryHeader fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasGlossaryHeader deserializedAtlasGlossaryHeader = new AtlasGlossaryHeader();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("displayText".equals(fieldName)) {
+                    deserializedAtlasGlossaryHeader.displayText = reader.getString();
+                } else if ("glossaryGuid".equals(fieldName)) {
+                    deserializedAtlasGlossaryHeader.glossaryGuid = reader.getString();
+                } else if ("relationGuid".equals(fieldName)) {
+                    deserializedAtlasGlossaryHeader.relationGuid = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasGlossaryHeader;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryTerm.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryTerm.java
index 1439f25338e8..017656a64c16 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryTerm.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasGlossaryTerm.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,145 +18,125 @@
  * The glossary term.
  */
 @Fluent
-public final class AtlasGlossaryTerm {
+public final class AtlasGlossaryTerm implements JsonSerializable {
     /*
      * The GUID of the object.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * An array of classifications.
      */
     @Generated
-    @JsonProperty(value = "classifications")
     private List classifications;
 
     /*
      * The long version description.
      */
     @Generated
-    @JsonProperty(value = "longDescription")
     private String longDescription;
 
     /*
      * The name of the glossary object.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The qualified name of the glossary object.
      */
     @Generated
-    @JsonProperty(value = "qualifiedName")
     private String qualifiedName;
 
     /*
      * The short version of description.
      */
     @Generated
-    @JsonProperty(value = "shortDescription")
     private String shortDescription;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * The abbreviation of the term.
      */
     @Generated
-    @JsonProperty(value = "abbreviation")
     private String abbreviation;
 
     /*
      * The name of the template.
      */
     @Generated
-    @JsonProperty(value = "templateName")
     private List templateName;
 
     /*
      * The glossary header with basic information.
      */
     @Generated
-    @JsonProperty(value = "anchor")
     private AtlasGlossaryHeader anchor;
 
     /*
      * An array of related term headers as antonyms.
      */
     @Generated
-    @JsonProperty(value = "antonyms")
     private List antonyms;
 
     /*
      * Status of the AtlasGlossaryTerm
      */
     @Generated
-    @JsonProperty(value = "status")
     private TermStatus status;
 
     /*
      * The nick name of the term.
      */
     @Generated
-    @JsonProperty(value = "nickName")
     private String nickName;
 
     /*
      * The hierarchy information of the term.
      */
     @Generated
-    @JsonProperty(value = "hierarchyInfo")
     private List hierarchyInfo;
 
     /*
      * An array of resource link for term
      */
     @Generated
-    @JsonProperty(value = "resources")
     private List resources;
 
     /*
      * The dictionary of contacts for terms. Key could be Expert or Steward.
      */
     @Generated
-    @JsonProperty(value = "contacts")
     private Map> contacts;
 
     /*
@@ -161,119 +145,102 @@ public final class AtlasGlossaryTerm {
      * key of the first layer map is term template name.
      */
     @Generated
-    @JsonProperty(value = "attributes")
     private Map> attributes;
 
     /*
      * An array of related object IDs.
      */
     @Generated
-    @JsonProperty(value = "assignedEntities")
     private List assignedEntities;
 
     /*
      * An array of term categorization headers.
      */
     @Generated
-    @JsonProperty(value = "categories")
     private List categories;
 
     /*
      * An array of related term headers.
      */
     @Generated
-    @JsonProperty(value = "classifies")
     private List classifies;
 
     /*
      * An array of examples.
      */
     @Generated
-    @JsonProperty(value = "examples")
     private List examples;
 
     /*
      * An array of related term headers indicating the is-a relationship.
      */
     @Generated
-    @JsonProperty(value = "isA")
     private List isA;
 
     /*
      * An array of preferred related term headers.
      */
     @Generated
-    @JsonProperty(value = "preferredTerms")
     private List preferredTerms;
 
     /*
      * An array of related term headers that are preferred to.
      */
     @Generated
-    @JsonProperty(value = "preferredToTerms")
     private List preferredToTerms;
 
     /*
      * An array of related term headers that are replaced by.
      */
     @Generated
-    @JsonProperty(value = "replacedBy")
     private List replacedBy;
 
     /*
      * An array of related term headers for replacement.
      */
     @Generated
-    @JsonProperty(value = "replacementTerms")
     private List replacementTerms;
 
     /*
      * An array of related term headers for see also.
      */
     @Generated
-    @JsonProperty(value = "seeAlso")
     private List seeAlso;
 
     /*
      * An array of related term headers as synonyms.
      */
     @Generated
-    @JsonProperty(value = "synonyms")
     private List synonyms;
 
     /*
      * An array of translated related term headers.
      */
     @Generated
-    @JsonProperty(value = "translatedTerms")
     private List translatedTerms;
 
     /*
      * An array of related term headers for translation.
      */
     @Generated
-    @JsonProperty(value = "translationTerms")
     private List translationTerms;
 
     /*
      * The usage of the term.
      */
     @Generated
-    @JsonProperty(value = "usage")
     private String usage;
 
     /*
      * An array of related term headers as valid values.
      */
     @Generated
-    @JsonProperty(value = "validValues")
     private List validValues;
 
     /*
      * An array of related term headers as valid values for other records.
      */
     @Generated
-    @JsonProperty(value = "validValuesFor")
     private List validValuesFor;
 
     /**
@@ -724,8 +691,7 @@ public AtlasGlossaryTerm setContacts(Map> contacts) {
     }
 
     /**
-     * Get the attributes property: The custom attributes of the term, which is
-     * map<string,map<string,object>>.
+     * Get the attributes property: The custom attributes of the term, which is map<string,map<string,object>>.
      * The
      * key of the first layer map is term template name.
      * 
@@ -737,8 +703,7 @@ public Map> getAttributes() {
     }
 
     /**
-     * Set the attributes property: The custom attributes of the term, which is
-     * map<string,map<string,object>>.
+     * Set the attributes property: The custom attributes of the term, which is map<string,map<string,object>>.
      * The
      * key of the first layer map is term template name.
      * 
@@ -1102,4 +1067,201 @@ public AtlasGlossaryTerm setValidValuesFor(List validVal
         this.validValuesFor = validValuesFor;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeArrayField("classifications", this.classifications,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("longDescription", this.longDescription);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("qualifiedName", this.qualifiedName);
+        jsonWriter.writeStringField("shortDescription", this.shortDescription);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeStringField("abbreviation", this.abbreviation);
+        jsonWriter.writeArrayField("templateName", this.templateName,
+            (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeJsonField("anchor", this.anchor);
+        jsonWriter.writeArrayField("antonyms", this.antonyms, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        jsonWriter.writeStringField("nickName", this.nickName);
+        jsonWriter.writeArrayField("hierarchyInfo", this.hierarchyInfo, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("resources", this.resources, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeMapField("contacts", this.contacts,
+            (writer, element) -> writer.writeArray(element, (writer1, element1) -> writer1.writeJson(element1)));
+        jsonWriter.writeMapField("attributes", this.attributes,
+            (writer, element) -> writer.writeMap(element, (writer1, element1) -> writer1.writeUntyped(element1)));
+        jsonWriter.writeArrayField("assignedEntities", this.assignedEntities,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("categories", this.categories, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("classifies", this.classifies, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("examples", this.examples, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("isA", this.isA, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("preferredTerms", this.preferredTerms,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("preferredToTerms", this.preferredToTerms,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("replacedBy", this.replacedBy, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("replacementTerms", this.replacementTerms,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("seeAlso", this.seeAlso, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("synonyms", this.synonyms, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("translatedTerms", this.translatedTerms,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("translationTerms", this.translationTerms,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("usage", this.usage);
+        jsonWriter.writeArrayField("validValues", this.validValues, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("validValuesFor", this.validValuesFor,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasGlossaryTerm from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasGlossaryTerm if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasGlossaryTerm.
+     */
+    @Generated
+    public static AtlasGlossaryTerm fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasGlossaryTerm deserializedAtlasGlossaryTerm = new AtlasGlossaryTerm();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("guid".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.guid = reader.getString();
+                } else if ("classifications".equals(fieldName)) {
+                    List classifications
+                        = reader.readArray(reader1 -> AtlasClassification.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.classifications = classifications;
+                } else if ("longDescription".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.longDescription = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.name = reader.getString();
+                } else if ("qualifiedName".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.qualifiedName = reader.getString();
+                } else if ("shortDescription".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.shortDescription = reader.getString();
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.lastModifiedTS = reader.getString();
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.createdBy = reader.getString();
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.updatedBy = reader.getString();
+                } else if ("abbreviation".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.abbreviation = reader.getString();
+                } else if ("templateName".equals(fieldName)) {
+                    List templateName = reader.readArray(reader1 -> reader1.readUntyped());
+                    deserializedAtlasGlossaryTerm.templateName = templateName;
+                } else if ("anchor".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.anchor = AtlasGlossaryHeader.fromJson(reader);
+                } else if ("antonyms".equals(fieldName)) {
+                    List antonyms
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.antonyms = antonyms;
+                } else if ("status".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.status = TermStatus.fromString(reader.getString());
+                } else if ("nickName".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.nickName = reader.getString();
+                } else if ("hierarchyInfo".equals(fieldName)) {
+                    List hierarchyInfo
+                        = reader.readArray(reader1 -> PurviewObjectId.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.hierarchyInfo = hierarchyInfo;
+                } else if ("resources".equals(fieldName)) {
+                    List resources = reader.readArray(reader1 -> ResourceLink.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.resources = resources;
+                } else if ("contacts".equals(fieldName)) {
+                    Map> contacts
+                        = reader.readMap(reader1 -> reader1.readArray(reader2 -> ContactInfo.fromJson(reader2)));
+                    deserializedAtlasGlossaryTerm.contacts = contacts;
+                } else if ("attributes".equals(fieldName)) {
+                    Map> attributes
+                        = reader.readMap(reader1 -> reader1.readMap(reader2 -> reader2.readUntyped()));
+                    deserializedAtlasGlossaryTerm.attributes = attributes;
+                } else if ("assignedEntities".equals(fieldName)) {
+                    List assignedEntities
+                        = reader.readArray(reader1 -> AtlasRelatedObjectId.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.assignedEntities = assignedEntities;
+                } else if ("categories".equals(fieldName)) {
+                    List categories
+                        = reader.readArray(reader1 -> AtlasTermCategorizationHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.categories = categories;
+                } else if ("classifies".equals(fieldName)) {
+                    List classifies
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.classifies = classifies;
+                } else if ("examples".equals(fieldName)) {
+                    List examples = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasGlossaryTerm.examples = examples;
+                } else if ("isA".equals(fieldName)) {
+                    List isA
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.isA = isA;
+                } else if ("preferredTerms".equals(fieldName)) {
+                    List preferredTerms
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.preferredTerms = preferredTerms;
+                } else if ("preferredToTerms".equals(fieldName)) {
+                    List preferredToTerms
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.preferredToTerms = preferredToTerms;
+                } else if ("replacedBy".equals(fieldName)) {
+                    List replacedBy
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.replacedBy = replacedBy;
+                } else if ("replacementTerms".equals(fieldName)) {
+                    List replacementTerms
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.replacementTerms = replacementTerms;
+                } else if ("seeAlso".equals(fieldName)) {
+                    List seeAlso
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.seeAlso = seeAlso;
+                } else if ("synonyms".equals(fieldName)) {
+                    List synonyms
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.synonyms = synonyms;
+                } else if ("translatedTerms".equals(fieldName)) {
+                    List translatedTerms
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.translatedTerms = translatedTerms;
+                } else if ("translationTerms".equals(fieldName)) {
+                    List translationTerms
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.translationTerms = translationTerms;
+                } else if ("usage".equals(fieldName)) {
+                    deserializedAtlasGlossaryTerm.usage = reader.getString();
+                } else if ("validValues".equals(fieldName)) {
+                    List validValues
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.validValues = validValues;
+                } else if ("validValuesFor".equals(fieldName)) {
+                    List validValuesFor
+                        = reader.readArray(reader1 -> AtlasRelatedTermHeader.fromJson(reader1));
+                    deserializedAtlasGlossaryTerm.validValuesFor = validValuesFor;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasGlossaryTerm;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasLineageInfo.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasLineageInfo.java
index f33fc44b70b2..92fe0cc2646e 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasLineageInfo.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasLineageInfo.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,68 +18,59 @@
  * The lineage information.
  */
 @Immutable
-public final class AtlasLineageInfo {
+public final class AtlasLineageInfo implements JsonSerializable {
     /*
      * The GUID of the base entity.
      */
     @Generated
-    @JsonProperty(value = "baseEntityGuid")
     private String baseEntityGuid;
 
     /*
      * The GUID entity map.
      */
     @Generated
-    @JsonProperty(value = "guidEntityMap")
     private Map guidEntityMap;
 
     /*
      * The entity count in specific direction.
      */
     @Generated
-    @JsonProperty(value = "widthCounts")
     private Map> widthCounts;
 
     /*
      * The depth of lineage.
      */
     @Generated
-    @JsonProperty(value = "lineageDepth")
     private Integer lineageDepth;
 
     /*
      * The width of lineage.
      */
     @Generated
-    @JsonProperty(value = "lineageWidth")
     private Integer lineageWidth;
 
     /*
      * The number of children node.
      */
     @Generated
-    @JsonProperty(value = "childrenCount")
     private Integer childrenCount;
 
     /*
      * The enum of lineage direction.
      */
     @Generated
-    @JsonProperty(value = "lineageDirection")
     private LineageDirection lineageDirection;
 
     /*
      * An array of parentRelations relations.
      */
     @Generated
-    @JsonProperty(value = "parentRelations")
     private List parentRelations;
 
     /*
      * An array of lineage relations.
      */
     @Generated
-    @JsonProperty(value = "relations")
     private List relations;
 
     /**
@@ -174,4 +169,75 @@ public List getParentRelations() {
     public List getRelations() {
         return this.relations;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("baseEntityGuid", this.baseEntityGuid);
+        jsonWriter.writeMapField("guidEntityMap", this.guidEntityMap, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeMapField("widthCounts", this.widthCounts,
+            (writer, element) -> writer.writeMap(element, (writer1, element1) -> writer1.writeUntyped(element1)));
+        jsonWriter.writeNumberField("lineageDepth", this.lineageDepth);
+        jsonWriter.writeNumberField("lineageWidth", this.lineageWidth);
+        jsonWriter.writeNumberField("childrenCount", this.childrenCount);
+        jsonWriter.writeStringField("lineageDirection",
+            this.lineageDirection == null ? null : this.lineageDirection.toString());
+        jsonWriter.writeArrayField("parentRelations", this.parentRelations,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("relations", this.relations, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasLineageInfo from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasLineageInfo if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasLineageInfo.
+     */
+    @Generated
+    public static AtlasLineageInfo fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasLineageInfo deserializedAtlasLineageInfo = new AtlasLineageInfo();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("baseEntityGuid".equals(fieldName)) {
+                    deserializedAtlasLineageInfo.baseEntityGuid = reader.getString();
+                } else if ("guidEntityMap".equals(fieldName)) {
+                    Map guidEntityMap
+                        = reader.readMap(reader1 -> AtlasEntityHeader.fromJson(reader1));
+                    deserializedAtlasLineageInfo.guidEntityMap = guidEntityMap;
+                } else if ("widthCounts".equals(fieldName)) {
+                    Map> widthCounts
+                        = reader.readMap(reader1 -> reader1.readMap(reader2 -> reader2.readUntyped()));
+                    deserializedAtlasLineageInfo.widthCounts = widthCounts;
+                } else if ("lineageDepth".equals(fieldName)) {
+                    deserializedAtlasLineageInfo.lineageDepth = reader.getNullable(JsonReader::getInt);
+                } else if ("lineageWidth".equals(fieldName)) {
+                    deserializedAtlasLineageInfo.lineageWidth = reader.getNullable(JsonReader::getInt);
+                } else if ("childrenCount".equals(fieldName)) {
+                    deserializedAtlasLineageInfo.childrenCount = reader.getNullable(JsonReader::getInt);
+                } else if ("lineageDirection".equals(fieldName)) {
+                    deserializedAtlasLineageInfo.lineageDirection = LineageDirection.fromString(reader.getString());
+                } else if ("parentRelations".equals(fieldName)) {
+                    List parentRelations
+                        = reader.readArray(reader1 -> ParentRelation.fromJson(reader1));
+                    deserializedAtlasLineageInfo.parentRelations = parentRelations;
+                } else if ("relations".equals(fieldName)) {
+                    List relations = reader.readArray(reader1 -> LineageRelation.fromJson(reader1));
+                    deserializedAtlasLineageInfo.relations = relations;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasLineageInfo;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasObjectId.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasObjectId.java
index 117ada8ea012..997a98576fc6 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasObjectId.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasObjectId.java
@@ -6,33 +6,34 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * Reference to an object-instance of a type - like entity.
  */
 @Fluent
-public final class AtlasObjectId {
+public final class AtlasObjectId implements JsonSerializable {
     /*
      * The GUID of the object.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The name of the type.
      */
     @Generated
-    @JsonProperty(value = "typeName")
     private String typeName;
 
     /*
      * The unique attributes of the object.
      */
     @Generated
-    @JsonProperty(value = "uniqueAttributes")
     private Map uniqueAttributes;
 
     /**
@@ -107,4 +108,49 @@ public AtlasObjectId setUniqueAttributes(Map uniqueAttributes) {
         this.uniqueAttributes = uniqueAttributes;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("typeName", this.typeName);
+        jsonWriter.writeMapField("uniqueAttributes", this.uniqueAttributes,
+            (writer, element) -> writer.writeUntyped(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasObjectId from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasObjectId if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasObjectId.
+     */
+    @Generated
+    public static AtlasObjectId fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasObjectId deserializedAtlasObjectId = new AtlasObjectId();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("guid".equals(fieldName)) {
+                    deserializedAtlasObjectId.guid = reader.getString();
+                } else if ("typeName".equals(fieldName)) {
+                    deserializedAtlasObjectId.typeName = reader.getString();
+                } else if ("uniqueAttributes".equals(fieldName)) {
+                    Map uniqueAttributes = reader.readMap(reader1 -> reader1.readUntyped());
+                    deserializedAtlasObjectId.uniqueAttributes = uniqueAttributes;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasObjectId;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelatedCategoryHeader.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelatedCategoryHeader.java
index fc86521ecb00..547e1125b54b 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelatedCategoryHeader.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelatedCategoryHeader.java
@@ -6,46 +6,45 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The header of the related category.
  */
 @Fluent
-public final class AtlasRelatedCategoryHeader {
+public final class AtlasRelatedCategoryHeader implements JsonSerializable {
     /*
      * The GUID of the category.
      */
     @Generated
-    @JsonProperty(value = "categoryGuid")
     private String categoryGuid;
 
     /*
      * The description of the category header.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The display text.
      */
     @Generated
-    @JsonProperty(value = "displayText")
     private String displayText;
 
     /*
      * The GUID of the parent category.
      */
     @Generated
-    @JsonProperty(value = "parentCategoryGuid")
     private String parentCategoryGuid;
 
     /*
      * The GUID of the relationship.
      */
     @Generated
-    @JsonProperty(value = "relationGuid")
     private String relationGuid;
 
     /**
@@ -164,4 +163,53 @@ public AtlasRelatedCategoryHeader setRelationGuid(String relationGuid) {
         this.relationGuid = relationGuid;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("categoryGuid", this.categoryGuid);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("displayText", this.displayText);
+        jsonWriter.writeStringField("parentCategoryGuid", this.parentCategoryGuid);
+        jsonWriter.writeStringField("relationGuid", this.relationGuid);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasRelatedCategoryHeader from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasRelatedCategoryHeader if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasRelatedCategoryHeader.
+     */
+    @Generated
+    public static AtlasRelatedCategoryHeader fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasRelatedCategoryHeader deserializedAtlasRelatedCategoryHeader = new AtlasRelatedCategoryHeader();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("categoryGuid".equals(fieldName)) {
+                    deserializedAtlasRelatedCategoryHeader.categoryGuid = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasRelatedCategoryHeader.description = reader.getString();
+                } else if ("displayText".equals(fieldName)) {
+                    deserializedAtlasRelatedCategoryHeader.displayText = reader.getString();
+                } else if ("parentCategoryGuid".equals(fieldName)) {
+                    deserializedAtlasRelatedCategoryHeader.parentCategoryGuid = reader.getString();
+                } else if ("relationGuid".equals(fieldName)) {
+                    deserializedAtlasRelatedCategoryHeader.relationGuid = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasRelatedCategoryHeader;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelatedObjectId.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelatedObjectId.java
index e0e7e09268d2..8c629d0ffff0 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelatedObjectId.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelatedObjectId.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
@@ -14,33 +18,29 @@
  * attribute values.
  */
 @Fluent
-public final class AtlasRelatedObjectId {
+public final class AtlasRelatedObjectId implements JsonSerializable {
     /*
      * The GUID of the object.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The name of the type.
      */
     @Generated
-    @JsonProperty(value = "typeName")
     private String typeName;
 
     /*
      * The unique attributes of the object.
      */
     @Generated
-    @JsonProperty(value = "uniqueAttributes")
     private Map uniqueAttributes;
 
     /*
      * The display text.
      */
     @Generated
-    @JsonProperty(value = "displayText")
     private String displayText;
 
     /*
@@ -48,14 +48,12 @@ public final class AtlasRelatedObjectId {
      * removed.
      */
     @Generated
-    @JsonProperty(value = "entityStatus")
     private EntityStatus entityStatus;
 
     /*
      * Relationship type
      */
     @Generated
-    @JsonProperty(value = "relationshipType")
     private String relationshipType;
 
     /*
@@ -63,21 +61,18 @@ public final class AtlasRelatedObjectId {
      * AtlasEntity, AtlasClassification.
      */
     @Generated
-    @JsonProperty(value = "relationshipAttributes")
     private AtlasStruct relationshipAttributes;
 
     /*
      * The GUID of the relationship.
      */
     @Generated
-    @JsonProperty(value = "relationshipGuid")
     private String relationshipGuid;
 
     /*
      * The enum of relationship status.
      */
     @Generated
-    @JsonProperty(value = "relationshipStatus")
     private StatusAtlasRelationship relationshipStatus;
 
     /**
@@ -222,8 +217,7 @@ public AtlasRelatedObjectId setRelationshipType(String relationshipType) {
     }
 
     /**
-     * Get the relationshipAttributes property: Captures details of struct contents. Not instantiated directly, used
-     * only via
+     * Get the relationshipAttributes property: Captures details of struct contents. Not instantiated directly, used only via
      * AtlasEntity, AtlasClassification.
      * 
      * @return the relationshipAttributes value.
@@ -234,8 +228,7 @@ public AtlasStruct getRelationshipAttributes() {
     }
 
     /**
-     * Set the relationshipAttributes property: Captures details of struct contents. Not instantiated directly, used
-     * only via
+     * Set the relationshipAttributes property: Captures details of struct contents. Not instantiated directly, used only via
      * AtlasEntity, AtlasClassification.
      * 
      * @param relationshipAttributes the relationshipAttributes value to set.
@@ -290,4 +283,69 @@ public AtlasRelatedObjectId setRelationshipStatus(StatusAtlasRelationship relati
         this.relationshipStatus = relationshipStatus;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("typeName", this.typeName);
+        jsonWriter.writeMapField("uniqueAttributes", this.uniqueAttributes,
+            (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeStringField("displayText", this.displayText);
+        jsonWriter.writeStringField("entityStatus", this.entityStatus == null ? null : this.entityStatus.toString());
+        jsonWriter.writeStringField("relationshipType", this.relationshipType);
+        jsonWriter.writeJsonField("relationshipAttributes", this.relationshipAttributes);
+        jsonWriter.writeStringField("relationshipGuid", this.relationshipGuid);
+        jsonWriter.writeStringField("relationshipStatus",
+            this.relationshipStatus == null ? null : this.relationshipStatus.toString());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasRelatedObjectId from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasRelatedObjectId if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasRelatedObjectId.
+     */
+    @Generated
+    public static AtlasRelatedObjectId fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasRelatedObjectId deserializedAtlasRelatedObjectId = new AtlasRelatedObjectId();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("guid".equals(fieldName)) {
+                    deserializedAtlasRelatedObjectId.guid = reader.getString();
+                } else if ("typeName".equals(fieldName)) {
+                    deserializedAtlasRelatedObjectId.typeName = reader.getString();
+                } else if ("uniqueAttributes".equals(fieldName)) {
+                    Map uniqueAttributes = reader.readMap(reader1 -> reader1.readUntyped());
+                    deserializedAtlasRelatedObjectId.uniqueAttributes = uniqueAttributes;
+                } else if ("displayText".equals(fieldName)) {
+                    deserializedAtlasRelatedObjectId.displayText = reader.getString();
+                } else if ("entityStatus".equals(fieldName)) {
+                    deserializedAtlasRelatedObjectId.entityStatus = EntityStatus.fromString(reader.getString());
+                } else if ("relationshipType".equals(fieldName)) {
+                    deserializedAtlasRelatedObjectId.relationshipType = reader.getString();
+                } else if ("relationshipAttributes".equals(fieldName)) {
+                    deserializedAtlasRelatedObjectId.relationshipAttributes = AtlasStruct.fromJson(reader);
+                } else if ("relationshipGuid".equals(fieldName)) {
+                    deserializedAtlasRelatedObjectId.relationshipGuid = reader.getString();
+                } else if ("relationshipStatus".equals(fieldName)) {
+                    deserializedAtlasRelatedObjectId.relationshipStatus
+                        = StatusAtlasRelationship.fromString(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasRelatedObjectId;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelatedTermHeader.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelatedTermHeader.java
index 9712c4e31cb3..3da8b888b39f 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelatedTermHeader.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelatedTermHeader.java
@@ -6,60 +6,57 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The header of the related term.
  */
 @Fluent
-public final class AtlasRelatedTermHeader {
+public final class AtlasRelatedTermHeader implements JsonSerializable {
     /*
      * The description of the related term.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The display text.
      */
     @Generated
-    @JsonProperty(value = "displayText")
     private String displayText;
 
     /*
      * The expression of the term.
      */
     @Generated
-    @JsonProperty(value = "expression")
     private String expression;
 
     /*
      * The GUID of the relationship.
      */
     @Generated
-    @JsonProperty(value = "relationGuid")
     private String relationGuid;
 
     /*
      * The status of term relationship.
      */
     @Generated
-    @JsonProperty(value = "status")
     private AtlasTermRelationshipStatus status;
 
     /*
      * The steward of the term.
      */
     @Generated
-    @JsonProperty(value = "steward")
     private String steward;
 
     /*
      * The GUID of the term.
      */
     @Generated
-    @JsonProperty(value = "termGuid")
     private String termGuid;
 
     /**
@@ -222,4 +219,60 @@ public AtlasRelatedTermHeader setTermGuid(String termGuid) {
         this.termGuid = termGuid;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("displayText", this.displayText);
+        jsonWriter.writeStringField("expression", this.expression);
+        jsonWriter.writeStringField("relationGuid", this.relationGuid);
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        jsonWriter.writeStringField("steward", this.steward);
+        jsonWriter.writeStringField("termGuid", this.termGuid);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasRelatedTermHeader from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasRelatedTermHeader if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasRelatedTermHeader.
+     */
+    @Generated
+    public static AtlasRelatedTermHeader fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasRelatedTermHeader deserializedAtlasRelatedTermHeader = new AtlasRelatedTermHeader();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("description".equals(fieldName)) {
+                    deserializedAtlasRelatedTermHeader.description = reader.getString();
+                } else if ("displayText".equals(fieldName)) {
+                    deserializedAtlasRelatedTermHeader.displayText = reader.getString();
+                } else if ("expression".equals(fieldName)) {
+                    deserializedAtlasRelatedTermHeader.expression = reader.getString();
+                } else if ("relationGuid".equals(fieldName)) {
+                    deserializedAtlasRelatedTermHeader.relationGuid = reader.getString();
+                } else if ("status".equals(fieldName)) {
+                    deserializedAtlasRelatedTermHeader.status
+                        = AtlasTermRelationshipStatus.fromString(reader.getString());
+                } else if ("steward".equals(fieldName)) {
+                    deserializedAtlasRelatedTermHeader.steward = reader.getString();
+                } else if ("termGuid".equals(fieldName)) {
+                    deserializedAtlasRelatedTermHeader.termGuid = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasRelatedTermHeader;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationship.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationship.java
index f3dfa026a7eb..91cf4e04a987 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationship.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationship.java
@@ -6,117 +6,106 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * Atlas relationship instance.
  */
 @Fluent
-public final class AtlasRelationship {
+public final class AtlasRelationship implements JsonSerializable {
     /*
      * The attributes of the struct.
      */
     @Generated
-    @JsonProperty(value = "attributes")
     private Map attributes;
 
     /*
      * The name of the type.
      */
     @Generated
-    @JsonProperty(value = "typeName")
     private String typeName;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * Reference to an object-instance of a type - like entity.
      */
     @Generated
-    @JsonProperty(value = "end1")
     private AtlasObjectId end1;
 
     /*
      * Reference to an object-instance of a type - like entity.
      */
     @Generated
-    @JsonProperty(value = "end2")
     private AtlasObjectId end2;
 
     /*
      * The GUID of the relationship.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The home ID of the relationship.
      */
     @Generated
-    @JsonProperty(value = "homeId")
     private String homeId;
 
     /*
      * The label of the relationship.
      */
     @Generated
-    @JsonProperty(value = "label")
     private String label;
 
     /*
      * Used to record the provenance of an instance of an entity or relationship
      */
     @Generated
-    @JsonProperty(value = "provenanceType")
     private Integer provenanceType;
 
     /*
      * The enum of relationship status.
      */
     @Generated
-    @JsonProperty(value = "status")
     private StatusAtlasRelationship status;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * The version of the relationship.
      */
     @Generated
-    @JsonProperty(value = "version")
     private Long version;
 
     /**
@@ -455,4 +444,84 @@ public AtlasRelationship setVersion(Long version) {
         this.version = version;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("attributes", this.attributes, (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeStringField("typeName", this.typeName);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeJsonField("end1", this.end1);
+        jsonWriter.writeJsonField("end2", this.end2);
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("homeId", this.homeId);
+        jsonWriter.writeStringField("label", this.label);
+        jsonWriter.writeNumberField("provenanceType", this.provenanceType);
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeNumberField("version", this.version);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasRelationship from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasRelationship if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasRelationship.
+     */
+    @Generated
+    public static AtlasRelationship fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasRelationship deserializedAtlasRelationship = new AtlasRelationship();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("attributes".equals(fieldName)) {
+                    Map attributes = reader.readMap(reader1 -> reader1.readUntyped());
+                    deserializedAtlasRelationship.attributes = attributes;
+                } else if ("typeName".equals(fieldName)) {
+                    deserializedAtlasRelationship.typeName = reader.getString();
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasRelationship.lastModifiedTS = reader.getString();
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasRelationship.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasRelationship.createdBy = reader.getString();
+                } else if ("end1".equals(fieldName)) {
+                    deserializedAtlasRelationship.end1 = AtlasObjectId.fromJson(reader);
+                } else if ("end2".equals(fieldName)) {
+                    deserializedAtlasRelationship.end2 = AtlasObjectId.fromJson(reader);
+                } else if ("guid".equals(fieldName)) {
+                    deserializedAtlasRelationship.guid = reader.getString();
+                } else if ("homeId".equals(fieldName)) {
+                    deserializedAtlasRelationship.homeId = reader.getString();
+                } else if ("label".equals(fieldName)) {
+                    deserializedAtlasRelationship.label = reader.getString();
+                } else if ("provenanceType".equals(fieldName)) {
+                    deserializedAtlasRelationship.provenanceType = reader.getNullable(JsonReader::getInt);
+                } else if ("status".equals(fieldName)) {
+                    deserializedAtlasRelationship.status = StatusAtlasRelationship.fromString(reader.getString());
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasRelationship.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasRelationship.updatedBy = reader.getString();
+                } else if ("version".equals(fieldName)) {
+                    deserializedAtlasRelationship.version = reader.getNullable(JsonReader::getLong);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasRelationship;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipAttributeDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipAttributeDef.java
index ce7c80133683..4cb363441482 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipAttributeDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipAttributeDef.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,113 +18,98 @@
  * The relationshipEndDef represents an end of the relationship. The end of the
  * relationship is defined by a type, an
  * attribute name, cardinality and whether
- * it is the container end of the relationship.
+ * it  is the container end of the relationship.
  */
 @Fluent
-public final class AtlasRelationshipAttributeDef {
+public final class AtlasRelationshipAttributeDef implements JsonSerializable {
     /*
      * single-valued attribute or multi-valued attribute.
      */
     @Generated
-    @JsonProperty(value = "cardinality")
     private CardinalityValue cardinality;
 
     /*
      * An array of constraints.
      */
     @Generated
-    @JsonProperty(value = "constraints")
     private List constraints;
 
     /*
      * The default value of the attribute.
      */
     @Generated
-    @JsonProperty(value = "defaultValue")
     private String defaultValue;
 
     /*
      * The description of the attribute.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * Determines if it is included in notification.
      */
     @Generated
-    @JsonProperty(value = "includeInNotification")
     private Boolean includeInNotification;
 
     /*
      * Determines if it is indexable.
      */
     @Generated
-    @JsonProperty(value = "isIndexable")
     private Boolean isIndexable;
 
     /*
      * Determines if it is optional.
      */
     @Generated
-    @JsonProperty(value = "isOptional")
     private Boolean isOptional;
 
     /*
      * Determines if it unique.
      */
     @Generated
-    @JsonProperty(value = "isUnique")
     private Boolean isUnique;
 
     /*
      * The name of the attribute.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The options for the attribute.
      */
     @Generated
-    @JsonProperty(value = "options")
     private Map options;
 
     /*
      * The name of the type.
      */
     @Generated
-    @JsonProperty(value = "typeName")
     private String typeName;
 
     /*
      * The maximum count of the values.
      */
     @Generated
-    @JsonProperty(value = "valuesMaxCount")
     private Integer valuesMaxCount;
 
     /*
      * The minimum count of the values.
      */
     @Generated
-    @JsonProperty(value = "valuesMinCount")
     private Integer valuesMinCount;
 
     /*
      * Determines if it is a legacy attribute.
      */
     @Generated
-    @JsonProperty(value = "isLegacyAttribute")
     private Boolean isLegacyAttribute;
 
     /*
      * The name of the relationship type.
      */
     @Generated
-    @JsonProperty(value = "relationshipTypeName")
     private String relationshipTypeName;
 
     /**
@@ -459,4 +448,90 @@ public AtlasRelationshipAttributeDef setRelationshipTypeName(String relationship
         this.relationshipTypeName = relationshipTypeName;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("cardinality", this.cardinality == null ? null : this.cardinality.toString());
+        jsonWriter.writeArrayField("constraints", this.constraints, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("defaultValue", this.defaultValue);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeBooleanField("includeInNotification", this.includeInNotification);
+        jsonWriter.writeBooleanField("isIndexable", this.isIndexable);
+        jsonWriter.writeBooleanField("isOptional", this.isOptional);
+        jsonWriter.writeBooleanField("isUnique", this.isUnique);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeMapField("options", this.options, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("typeName", this.typeName);
+        jsonWriter.writeNumberField("valuesMaxCount", this.valuesMaxCount);
+        jsonWriter.writeNumberField("valuesMinCount", this.valuesMinCount);
+        jsonWriter.writeBooleanField("isLegacyAttribute", this.isLegacyAttribute);
+        jsonWriter.writeStringField("relationshipTypeName", this.relationshipTypeName);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasRelationshipAttributeDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasRelationshipAttributeDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasRelationshipAttributeDef.
+     */
+    @Generated
+    public static AtlasRelationshipAttributeDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasRelationshipAttributeDef deserializedAtlasRelationshipAttributeDef
+                = new AtlasRelationshipAttributeDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("cardinality".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.cardinality
+                        = CardinalityValue.fromString(reader.getString());
+                } else if ("constraints".equals(fieldName)) {
+                    List constraints
+                        = reader.readArray(reader1 -> AtlasConstraintDef.fromJson(reader1));
+                    deserializedAtlasRelationshipAttributeDef.constraints = constraints;
+                } else if ("defaultValue".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.defaultValue = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.description = reader.getString();
+                } else if ("includeInNotification".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.includeInNotification
+                        = reader.getNullable(JsonReader::getBoolean);
+                } else if ("isIndexable".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.isIndexable = reader.getNullable(JsonReader::getBoolean);
+                } else if ("isOptional".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.isOptional = reader.getNullable(JsonReader::getBoolean);
+                } else if ("isUnique".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.isUnique = reader.getNullable(JsonReader::getBoolean);
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.name = reader.getString();
+                } else if ("options".equals(fieldName)) {
+                    Map options = reader.readMap(reader1 -> reader1.getString());
+                    deserializedAtlasRelationshipAttributeDef.options = options;
+                } else if ("typeName".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.typeName = reader.getString();
+                } else if ("valuesMaxCount".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.valuesMaxCount = reader.getNullable(JsonReader::getInt);
+                } else if ("valuesMinCount".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.valuesMinCount = reader.getNullable(JsonReader::getInt);
+                } else if ("isLegacyAttribute".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.isLegacyAttribute
+                        = reader.getNullable(JsonReader::getBoolean);
+                } else if ("relationshipTypeName".equals(fieldName)) {
+                    deserializedAtlasRelationshipAttributeDef.relationshipTypeName = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasRelationshipAttributeDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipDef.java
index 29420109910f..9e12f91ad0d5 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipDef.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -21,9 +25,9 @@
  * whether the
  * end is a container.
  * RelationshipDefs can have AttributeDefs - though only
- * primitive types are allowed.
+ * primitive types are allowed. 
  * RelationshipDefs have a relationshipCategory
- * specifying the UML type of relationship required
+ * specifying the UML type of relationship required 
  * The way EntityDefs and
  * RelationshipDefs are intended to be used is that EntityDefs will define
  * AttributeDefs these AttributeDefs
@@ -33,15 +37,15 @@
  * instances. For example
  * EntityDef A might have attributes attr1,attr2,attr3
  * 
- * EntityDef B might have attributes attr4,attr5,attr6
+ * EntityDef B might have attributes attr4,attr5,attr6 
  * RelationshipDef
- * AtoB might define 2 ends
+ * AtoB might define 2 ends 
  * 
- * end1: type A, name attr7
- * end2: type B, name attr8
+ * end1:  type A, name attr7
+ * end2:  type B, name attr8 
  * 
  * When an instance of EntityDef A is created, it
- * will have attributes attr1,attr2,attr3,attr7
+ * will have attributes attr1,attr2,attr3,attr7 
  * When an instance of EntityDef
  * B is created, it will have attributes attr4,attr5,attr6,attr8
  * 
@@ -51,151 +55,132 @@
  * the entity instances.
  */
 @Fluent
-public final class AtlasRelationshipDef {
+public final class AtlasRelationshipDef implements JsonSerializable {
     /*
      * The enum of type category.
      */
     @Generated
-    @JsonProperty(value = "category")
     private TypeCategory category;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The date format.
      */
     @Generated
-    @JsonProperty(value = "dateFormatter")
     private DateFormat dateFormatter;
 
     /*
      * The description of the type definition.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The GUID of the type definition.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The name of the type definition.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The options for the type definition.
      */
     @Generated
-    @JsonProperty(value = "options")
     private Map options;
 
     /*
      * The service type.
      */
     @Generated
-    @JsonProperty(value = "serviceType")
     private String serviceType;
 
     /*
      * The version of the type.
      */
     @Generated
-    @JsonProperty(value = "typeVersion")
     private String typeVersion;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * The version of the record.
      */
     @Generated
-    @JsonProperty(value = "version")
     private Long version;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * An array of attribute definitions.
      */
     @Generated
-    @JsonProperty(value = "attributeDefs")
     private List attributeDefs;
 
     /*
      * The relationshipEndDef represents an end of the relationship. The end of the
      * relationship is defined by a type, an
      * attribute name, cardinality and whether
-     * it is the container end of the relationship.
+     * it  is the container end of the relationship.
      */
     @Generated
-    @JsonProperty(value = "endDef1")
     private AtlasRelationshipEndDef endDef1;
 
     /*
      * The relationshipEndDef represents an end of the relationship. The end of the
      * relationship is defined by a type, an
      * attribute name, cardinality and whether
-     * it is the container end of the relationship.
+     * it  is the container end of the relationship.
      */
     @Generated
-    @JsonProperty(value = "endDef2")
     private AtlasRelationshipEndDef endDef2;
 
     /*
      * The Relationship category determines the style of relationship around
      * containment and lifecycle.
      * UML terminology is used for the values.
-     * ASSOCIATION is a relationship with no containment.
+     * ASSOCIATION is a relationship with no containment. 
      * COMPOSITION and AGGREGATION are containment relationships.
-     * The difference being in the lifecycles of the container and its children.
+     * The difference being in the lifecycles of the container and its children. 
      * In the COMPOSITION case, the children cannot exist without the container.
      * For AGGREGATION, the life cycles of the container and children are totally independent.
      */
     @Generated
-    @JsonProperty(value = "relationshipCategory")
     private RelationshipCategory relationshipCategory;
 
     /*
      * The label of the relationship.
      */
     @Generated
-    @JsonProperty(value = "relationshipLabel")
     private String relationshipLabel;
 
     /**
@@ -539,7 +524,7 @@ public AtlasRelationshipDef setAttributeDefs(List attributeDe
      * Get the endDef1 property: The relationshipEndDef represents an end of the relationship. The end of the
      * relationship is defined by a type, an
      * attribute name, cardinality and whether
-     * it is the container end of the relationship.
+     * it  is the container end of the relationship.
      * 
      * @return the endDef1 value.
      */
@@ -552,7 +537,7 @@ public AtlasRelationshipEndDef getEndDef1() {
      * Set the endDef1 property: The relationshipEndDef represents an end of the relationship. The end of the
      * relationship is defined by a type, an
      * attribute name, cardinality and whether
-     * it is the container end of the relationship.
+     * it  is the container end of the relationship.
      * 
      * @param endDef1 the endDef1 value to set.
      * @return the AtlasRelationshipDef object itself.
@@ -567,7 +552,7 @@ public AtlasRelationshipDef setEndDef1(AtlasRelationshipEndDef endDef1) {
      * Get the endDef2 property: The relationshipEndDef represents an end of the relationship. The end of the
      * relationship is defined by a type, an
      * attribute name, cardinality and whether
-     * it is the container end of the relationship.
+     * it  is the container end of the relationship.
      * 
      * @return the endDef2 value.
      */
@@ -580,7 +565,7 @@ public AtlasRelationshipEndDef getEndDef2() {
      * Set the endDef2 property: The relationshipEndDef represents an end of the relationship. The end of the
      * relationship is defined by a type, an
      * attribute name, cardinality and whether
-     * it is the container end of the relationship.
+     * it  is the container end of the relationship.
      * 
      * @param endDef2 the endDef2 value to set.
      * @return the AtlasRelationshipDef object itself.
@@ -595,9 +580,9 @@ public AtlasRelationshipDef setEndDef2(AtlasRelationshipEndDef endDef2) {
      * Get the relationshipCategory property: The Relationship category determines the style of relationship around
      * containment and lifecycle.
      * UML terminology is used for the values.
-     * ASSOCIATION is a relationship with no containment.
+     * ASSOCIATION is a relationship with no containment. 
      * COMPOSITION and AGGREGATION are containment relationships.
-     * The difference being in the lifecycles of the container and its children.
+     * The difference being in the lifecycles of the container and its children. 
      * In the COMPOSITION case, the children cannot exist without the container.
      * For AGGREGATION, the life cycles of the container and children are totally independent.
      * 
@@ -612,9 +597,9 @@ public RelationshipCategory getRelationshipCategory() {
      * Set the relationshipCategory property: The Relationship category determines the style of relationship around
      * containment and lifecycle.
      * UML terminology is used for the values.
-     * ASSOCIATION is a relationship with no containment.
+     * ASSOCIATION is a relationship with no containment. 
      * COMPOSITION and AGGREGATION are containment relationships.
-     * The difference being in the lifecycles of the container and its children.
+     * The difference being in the lifecycles of the container and its children. 
      * In the COMPOSITION case, the children cannot exist without the container.
      * For AGGREGATION, the life cycles of the container and children are totally independent.
      * 
@@ -648,4 +633,100 @@ public AtlasRelationshipDef setRelationshipLabel(String relationshipLabel) {
         this.relationshipLabel = relationshipLabel;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("category", this.category == null ? null : this.category.toString());
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeJsonField("dateFormatter", this.dateFormatter);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeMapField("options", this.options, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("serviceType", this.serviceType);
+        jsonWriter.writeStringField("typeVersion", this.typeVersion);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeNumberField("version", this.version);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeArrayField("attributeDefs", this.attributeDefs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("endDef1", this.endDef1);
+        jsonWriter.writeJsonField("endDef2", this.endDef2);
+        jsonWriter.writeStringField("relationshipCategory",
+            this.relationshipCategory == null ? null : this.relationshipCategory.toString());
+        jsonWriter.writeStringField("relationshipLabel", this.relationshipLabel);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasRelationshipDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasRelationshipDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasRelationshipDef.
+     */
+    @Generated
+    public static AtlasRelationshipDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasRelationshipDef deserializedAtlasRelationshipDef = new AtlasRelationshipDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("category".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.category = TypeCategory.fromString(reader.getString());
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.createdBy = reader.getString();
+                } else if ("dateFormatter".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.dateFormatter = DateFormat.fromJson(reader);
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.description = reader.getString();
+                } else if ("guid".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.guid = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.name = reader.getString();
+                } else if ("options".equals(fieldName)) {
+                    Map options = reader.readMap(reader1 -> reader1.getString());
+                    deserializedAtlasRelationshipDef.options = options;
+                } else if ("serviceType".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.serviceType = reader.getString();
+                } else if ("typeVersion".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.typeVersion = reader.getString();
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.updatedBy = reader.getString();
+                } else if ("version".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.version = reader.getNullable(JsonReader::getLong);
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.lastModifiedTS = reader.getString();
+                } else if ("attributeDefs".equals(fieldName)) {
+                    List attributeDefs
+                        = reader.readArray(reader1 -> AtlasAttributeDef.fromJson(reader1));
+                    deserializedAtlasRelationshipDef.attributeDefs = attributeDefs;
+                } else if ("endDef1".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.endDef1 = AtlasRelationshipEndDef.fromJson(reader);
+                } else if ("endDef2".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.endDef2 = AtlasRelationshipEndDef.fromJson(reader);
+                } else if ("relationshipCategory".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.relationshipCategory
+                        = RelationshipCategory.fromString(reader.getString());
+                } else if ("relationshipLabel".equals(fieldName)) {
+                    deserializedAtlasRelationshipDef.relationshipLabel = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasRelationshipDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipEndDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipEndDef.java
index ed3fb6af245a..ce25f2750b09 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipEndDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipEndDef.java
@@ -6,56 +6,54 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The relationshipEndDef represents an end of the relationship. The end of the
  * relationship is defined by a type, an
  * attribute name, cardinality and whether
- * it is the container end of the relationship.
+ * it  is the container end of the relationship.
  */
 @Fluent
-public final class AtlasRelationshipEndDef {
+public final class AtlasRelationshipEndDef implements JsonSerializable {
     /*
      * single-valued attribute or multi-valued attribute.
      */
     @Generated
-    @JsonProperty(value = "cardinality")
     private CardinalityValue cardinality;
 
     /*
      * The description of the relationship end definition.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * Determines if it is container.
      */
     @Generated
-    @JsonProperty(value = "isContainer")
     private Boolean isContainer;
 
     /*
      * Determines if it is a legacy attribute.
      */
     @Generated
-    @JsonProperty(value = "isLegacyAttribute")
     private Boolean isLegacyAttribute;
 
     /*
      * The name of the relationship end definition.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The type of the relationship end.
      */
     @Generated
-    @JsonProperty(value = "type")
     private String type;
 
     /**
@@ -196,4 +194,56 @@ public AtlasRelationshipEndDef setType(String type) {
         this.type = type;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("cardinality", this.cardinality == null ? null : this.cardinality.toString());
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeBooleanField("isContainer", this.isContainer);
+        jsonWriter.writeBooleanField("isLegacyAttribute", this.isLegacyAttribute);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("type", this.type);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasRelationshipEndDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasRelationshipEndDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasRelationshipEndDef.
+     */
+    @Generated
+    public static AtlasRelationshipEndDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasRelationshipEndDef deserializedAtlasRelationshipEndDef = new AtlasRelationshipEndDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("cardinality".equals(fieldName)) {
+                    deserializedAtlasRelationshipEndDef.cardinality = CardinalityValue.fromString(reader.getString());
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasRelationshipEndDef.description = reader.getString();
+                } else if ("isContainer".equals(fieldName)) {
+                    deserializedAtlasRelationshipEndDef.isContainer = reader.getNullable(JsonReader::getBoolean);
+                } else if ("isLegacyAttribute".equals(fieldName)) {
+                    deserializedAtlasRelationshipEndDef.isLegacyAttribute = reader.getNullable(JsonReader::getBoolean);
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasRelationshipEndDef.name = reader.getString();
+                } else if ("type".equals(fieldName)) {
+                    deserializedAtlasRelationshipEndDef.type = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasRelationshipEndDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipWithExtInfo.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipWithExtInfo.java
index 400e199b0d9f..28de62460e04 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipWithExtInfo.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasRelationshipWithExtInfo.java
@@ -6,26 +6,28 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * The relationship with extended information.
  */
 @Immutable
-public final class AtlasRelationshipWithExtInfo {
+public final class AtlasRelationshipWithExtInfo implements JsonSerializable {
     /*
      * The referred entity header.
      */
     @Generated
-    @JsonProperty(value = "referredEntities")
     private Map referredEntities;
 
     /*
      * Atlas relationship instance.
      */
     @Generated
-    @JsonProperty(value = "relationship")
     private AtlasRelationship relationship;
 
     /**
@@ -54,4 +56,47 @@ public Map getReferredEntities() {
     public AtlasRelationship getRelationship() {
         return this.relationship;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("referredEntities", this.referredEntities,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("relationship", this.relationship);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasRelationshipWithExtInfo from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasRelationshipWithExtInfo if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasRelationshipWithExtInfo.
+     */
+    @Generated
+    public static AtlasRelationshipWithExtInfo fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasRelationshipWithExtInfo deserializedAtlasRelationshipWithExtInfo = new AtlasRelationshipWithExtInfo();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("referredEntities".equals(fieldName)) {
+                    Map referredEntities
+                        = reader.readMap(reader1 -> AtlasEntityHeader.fromJson(reader1));
+                    deserializedAtlasRelationshipWithExtInfo.referredEntities = referredEntities;
+                } else if ("relationship".equals(fieldName)) {
+                    deserializedAtlasRelationshipWithExtInfo.relationship = AtlasRelationship.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasRelationshipWithExtInfo;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasStruct.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasStruct.java
index fbdab722d129..db5c580a0e10 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasStruct.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasStruct.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
@@ -14,26 +18,23 @@
  * AtlasEntity, AtlasClassification.
  */
 @Fluent
-public final class AtlasStruct {
+public final class AtlasStruct implements JsonSerializable {
     /*
      * The attributes of the struct.
      */
     @Generated
-    @JsonProperty(value = "attributes")
     private Map attributes;
 
     /*
      * The name of the type.
      */
     @Generated
-    @JsonProperty(value = "typeName")
     private String typeName;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /**
@@ -108,4 +109,48 @@ public AtlasStruct setLastModifiedTS(String lastModifiedTS) {
         this.lastModifiedTS = lastModifiedTS;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("attributes", this.attributes, (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeStringField("typeName", this.typeName);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasStruct from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasStruct if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasStruct.
+     */
+    @Generated
+    public static AtlasStruct fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasStruct deserializedAtlasStruct = new AtlasStruct();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("attributes".equals(fieldName)) {
+                    Map attributes = reader.readMap(reader1 -> reader1.readUntyped());
+                    deserializedAtlasStruct.attributes = attributes;
+                } else if ("typeName".equals(fieldName)) {
+                    deserializedAtlasStruct.typeName = reader.getString();
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasStruct.lastModifiedTS = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasStruct;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasStructDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasStructDef.java
index 34ab01c96b58..f7b45704e44c 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasStructDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasStructDef.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,110 +18,95 @@
  * class that captures details of a struct-type.
  */
 @Fluent
-public final class AtlasStructDef {
+public final class AtlasStructDef implements JsonSerializable {
     /*
      * The enum of type category.
      */
     @Generated
-    @JsonProperty(value = "category")
     private TypeCategory category;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The date format.
      */
     @Generated
-    @JsonProperty(value = "dateFormatter")
     private DateFormat dateFormatter;
 
     /*
      * The description of the type definition.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The GUID of the type definition.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The name of the type definition.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The options for the type definition.
      */
     @Generated
-    @JsonProperty(value = "options")
     private Map options;
 
     /*
      * The service type.
      */
     @Generated
-    @JsonProperty(value = "serviceType")
     private String serviceType;
 
     /*
      * The version of the type.
      */
     @Generated
-    @JsonProperty(value = "typeVersion")
     private String typeVersion;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * The version of the record.
      */
     @Generated
-    @JsonProperty(value = "version")
     private Long version;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * An array of attribute definitions.
      */
     @Generated
-    @JsonProperty(value = "attributeDefs")
     private List attributeDefs;
 
     /**
@@ -456,4 +445,86 @@ public AtlasStructDef setAttributeDefs(List attributeDefs) {
         this.attributeDefs = attributeDefs;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("category", this.category == null ? null : this.category.toString());
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeJsonField("dateFormatter", this.dateFormatter);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeMapField("options", this.options, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("serviceType", this.serviceType);
+        jsonWriter.writeStringField("typeVersion", this.typeVersion);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeNumberField("version", this.version);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeArrayField("attributeDefs", this.attributeDefs, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasStructDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasStructDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasStructDef.
+     */
+    @Generated
+    public static AtlasStructDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasStructDef deserializedAtlasStructDef = new AtlasStructDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("category".equals(fieldName)) {
+                    deserializedAtlasStructDef.category = TypeCategory.fromString(reader.getString());
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasStructDef.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasStructDef.createdBy = reader.getString();
+                } else if ("dateFormatter".equals(fieldName)) {
+                    deserializedAtlasStructDef.dateFormatter = DateFormat.fromJson(reader);
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasStructDef.description = reader.getString();
+                } else if ("guid".equals(fieldName)) {
+                    deserializedAtlasStructDef.guid = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasStructDef.name = reader.getString();
+                } else if ("options".equals(fieldName)) {
+                    Map options = reader.readMap(reader1 -> reader1.getString());
+                    deserializedAtlasStructDef.options = options;
+                } else if ("serviceType".equals(fieldName)) {
+                    deserializedAtlasStructDef.serviceType = reader.getString();
+                } else if ("typeVersion".equals(fieldName)) {
+                    deserializedAtlasStructDef.typeVersion = reader.getString();
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasStructDef.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasStructDef.updatedBy = reader.getString();
+                } else if ("version".equals(fieldName)) {
+                    deserializedAtlasStructDef.version = reader.getNullable(JsonReader::getLong);
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasStructDef.lastModifiedTS = reader.getString();
+                } else if ("attributeDefs".equals(fieldName)) {
+                    List attributeDefs
+                        = reader.readArray(reader1 -> AtlasAttributeDef.fromJson(reader1));
+                    deserializedAtlasStructDef.attributeDefs = attributeDefs;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasStructDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermAssignmentHeader.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermAssignmentHeader.java
index e5263fa4a362..b5f8affedb04 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermAssignmentHeader.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermAssignmentHeader.java
@@ -6,74 +6,69 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The header for term assignment.
  */
 @Fluent
-public final class AtlasTermAssignmentHeader {
+public final class AtlasTermAssignmentHeader implements JsonSerializable {
     /*
      * The confidence of the term assignment.
      */
     @Generated
-    @JsonProperty(value = "confidence")
     private Integer confidence;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The description of the term assignment.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The display text.
      */
     @Generated
-    @JsonProperty(value = "displayText")
     private String displayText;
 
     /*
      * The expression of the term assignment.
      */
     @Generated
-    @JsonProperty(value = "expression")
     private String expression;
 
     /*
      * The GUID of the relationship.
      */
     @Generated
-    @JsonProperty(value = "relationGuid")
     private String relationGuid;
 
     /*
      * The status of terms assignment.
      */
     @Generated
-    @JsonProperty(value = "status")
     private AtlasTermAssignmentStatus status;
 
     /*
      * The steward of the term.
      */
     @Generated
-    @JsonProperty(value = "steward")
     private String steward;
 
     /*
      * The GUID of the term.
      */
     @Generated
-    @JsonProperty(value = "termGuid")
     private String termGuid;
 
     /**
@@ -280,4 +275,66 @@ public AtlasTermAssignmentHeader setTermGuid(String termGuid) {
         this.termGuid = termGuid;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("confidence", this.confidence);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("displayText", this.displayText);
+        jsonWriter.writeStringField("expression", this.expression);
+        jsonWriter.writeStringField("relationGuid", this.relationGuid);
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        jsonWriter.writeStringField("steward", this.steward);
+        jsonWriter.writeStringField("termGuid", this.termGuid);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasTermAssignmentHeader from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasTermAssignmentHeader if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasTermAssignmentHeader.
+     */
+    @Generated
+    public static AtlasTermAssignmentHeader fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasTermAssignmentHeader deserializedAtlasTermAssignmentHeader = new AtlasTermAssignmentHeader();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("confidence".equals(fieldName)) {
+                    deserializedAtlasTermAssignmentHeader.confidence = reader.getNullable(JsonReader::getInt);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasTermAssignmentHeader.createdBy = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasTermAssignmentHeader.description = reader.getString();
+                } else if ("displayText".equals(fieldName)) {
+                    deserializedAtlasTermAssignmentHeader.displayText = reader.getString();
+                } else if ("expression".equals(fieldName)) {
+                    deserializedAtlasTermAssignmentHeader.expression = reader.getString();
+                } else if ("relationGuid".equals(fieldName)) {
+                    deserializedAtlasTermAssignmentHeader.relationGuid = reader.getString();
+                } else if ("status".equals(fieldName)) {
+                    deserializedAtlasTermAssignmentHeader.status
+                        = AtlasTermAssignmentStatus.fromString(reader.getString());
+                } else if ("steward".equals(fieldName)) {
+                    deserializedAtlasTermAssignmentHeader.steward = reader.getString();
+                } else if ("termGuid".equals(fieldName)) {
+                    deserializedAtlasTermAssignmentHeader.termGuid = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasTermAssignmentHeader;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermAssignmentStatus.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermAssignmentStatus.java
index 52e314da8500..48e0b9d78f09 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermAssignmentStatus.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermAssignmentStatus.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -72,7 +71,6 @@ public AtlasTermAssignmentStatus() {
      * @return the corresponding AtlasTermAssignmentStatus.
      */
     @Generated
-    @JsonCreator
     public static AtlasTermAssignmentStatus fromString(String name) {
         return fromString(name, AtlasTermAssignmentStatus.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermCategorizationHeader.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermCategorizationHeader.java
index ff1c38d4f681..a3ba27500c11 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermCategorizationHeader.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermCategorizationHeader.java
@@ -6,46 +6,45 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The basic information for term categorization.
  */
 @Fluent
-public final class AtlasTermCategorizationHeader {
+public final class AtlasTermCategorizationHeader implements JsonSerializable {
     /*
      * The GUID of the category.
      */
     @Generated
-    @JsonProperty(value = "categoryGuid")
     private String categoryGuid;
 
     /*
      * The description of the record.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The display text.
      */
     @Generated
-    @JsonProperty(value = "displayText")
     private String displayText;
 
     /*
      * The GUID of the relationship.
      */
     @Generated
-    @JsonProperty(value = "relationGuid")
     private String relationGuid;
 
     /*
      * The status of term relationship.
      */
     @Generated
-    @JsonProperty(value = "status")
     private AtlasTermRelationshipStatus status;
 
     /**
@@ -164,4 +163,55 @@ public AtlasTermCategorizationHeader setStatus(AtlasTermRelationshipStatus statu
         this.status = status;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("categoryGuid", this.categoryGuid);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("displayText", this.displayText);
+        jsonWriter.writeStringField("relationGuid", this.relationGuid);
+        jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasTermCategorizationHeader from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasTermCategorizationHeader if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasTermCategorizationHeader.
+     */
+    @Generated
+    public static AtlasTermCategorizationHeader fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasTermCategorizationHeader deserializedAtlasTermCategorizationHeader
+                = new AtlasTermCategorizationHeader();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("categoryGuid".equals(fieldName)) {
+                    deserializedAtlasTermCategorizationHeader.categoryGuid = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasTermCategorizationHeader.description = reader.getString();
+                } else if ("displayText".equals(fieldName)) {
+                    deserializedAtlasTermCategorizationHeader.displayText = reader.getString();
+                } else if ("relationGuid".equals(fieldName)) {
+                    deserializedAtlasTermCategorizationHeader.relationGuid = reader.getString();
+                } else if ("status".equals(fieldName)) {
+                    deserializedAtlasTermCategorizationHeader.status
+                        = AtlasTermRelationshipStatus.fromString(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasTermCategorizationHeader;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermRelationshipStatus.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermRelationshipStatus.java
index b0562345144c..a396086f56de 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermRelationshipStatus.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTermRelationshipStatus.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -60,7 +59,6 @@ public AtlasTermRelationshipStatus() {
      * @return the corresponding AtlasTermRelationshipStatus.
      */
     @Generated
-    @JsonCreator
     public static AtlasTermRelationshipStatus fromString(String name) {
         return fromString(name, AtlasTermRelationshipStatus.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTypeDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTypeDef.java
index 1d7e7d18f997..090638cc4181 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTypeDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTypeDef.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,103 +18,89 @@
  * The definitions of type.
  */
 @Immutable
-public final class AtlasTypeDef {
+public final class AtlasTypeDef implements JsonSerializable {
     /*
      * The enum of type category.
      */
     @Generated
-    @JsonProperty(value = "category")
     private TypeCategory category;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The date format.
      */
     @Generated
-    @JsonProperty(value = "dateFormatter")
     private DateFormat dateFormatter;
 
     /*
      * The description of the type definition.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The GUID of the type definition.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The name of the type definition.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The options for the type definition.
      */
     @Generated
-    @JsonProperty(value = "options")
     private Map options;
 
     /*
      * The service type.
      */
     @Generated
-    @JsonProperty(value = "serviceType")
     private String serviceType;
 
     /*
      * The version of the type.
      */
     @Generated
-    @JsonProperty(value = "typeVersion")
     private String typeVersion;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * The version of the record.
      */
     @Generated
-    @JsonProperty(value = "version")
     private Long version;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
@@ -138,62 +128,54 @@ public final class AtlasTypeDef {
      * 
      */
     @Generated
-    @JsonProperty(value = "entityTypes")
     private List entityTypes;
 
     /*
      * An array of sub types.
      */
     @Generated
-    @JsonProperty(value = "subTypes")
     private List subTypes;
 
     /*
      * An array of super types.
      */
     @Generated
-    @JsonProperty(value = "superTypes")
     private List superTypes;
 
     /*
      * An array of relationship attributes.
      */
     @Generated
-    @JsonProperty(value = "relationshipAttributeDefs")
     private List relationshipAttributeDefs;
 
     /*
      * The default value.
      */
     @Generated
-    @JsonProperty(value = "defaultValue")
     private String defaultValue;
 
     /*
      * An array of enum element definitions.
      */
     @Generated
-    @JsonProperty(value = "elementDefs")
     private List elementDefs;
 
     /*
      * The relationshipEndDef represents an end of the relationship. The end of the
      * relationship is defined by a type, an
      * attribute name, cardinality and whether
-     * it is the container end of the relationship.
+     * it  is the container end of the relationship.
      */
     @Generated
-    @JsonProperty(value = "endDef1")
     private AtlasRelationshipEndDef endDef1;
 
     /*
      * The relationshipEndDef represents an end of the relationship. The end of the
      * relationship is defined by a type, an
      * attribute name, cardinality and whether
-     * it is the container end of the relationship.
+     * it  is the container end of the relationship.
      */
     @Generated
-    @JsonProperty(value = "endDef2")
     private AtlasRelationshipEndDef endDef2;
 
     /*
@@ -201,29 +183,26 @@ public final class AtlasTypeDef {
      * containment and lifecycle.
      * UML terminology is used for the values.
      * 
-     * ASSOCIATION is a relationship with no containment.
+     * ASSOCIATION is a relationship with no containment. 
      * COMPOSITION and AGGREGATION are containment relationships.
      * 
-     * The difference being in the lifecycles of the container and its children.
-     * In the COMPOSITION case, the children cannot exist without the container.
+     * The difference being in the lifecycles of the container and its children. 
+     * In the COMPOSITION case, the children cannot exist without the container. 
      * For AGGREGATION, the life cycles of the container and children are totally independent.
      */
     @Generated
-    @JsonProperty(value = "relationshipCategory")
     private RelationshipCategory relationshipCategory;
 
     /*
      * The label of the relationship.
      */
     @Generated
-    @JsonProperty(value = "relationshipLabel")
     private String relationshipLabel;
 
     /*
      * An array of attribute definitions.
      */
     @Generated
-    @JsonProperty(value = "attributeDefs")
     private List attributeDefs;
 
     /**
@@ -457,7 +436,7 @@ public List getElementDefs() {
      * Get the endDef1 property: The relationshipEndDef represents an end of the relationship. The end of the
      * relationship is defined by a type, an
      * attribute name, cardinality and whether
-     * it is the container end of the relationship.
+     * it  is the container end of the relationship.
      * 
      * @return the endDef1 value.
      */
@@ -470,7 +449,7 @@ public AtlasRelationshipEndDef getEndDef1() {
      * Get the endDef2 property: The relationshipEndDef represents an end of the relationship. The end of the
      * relationship is defined by a type, an
      * attribute name, cardinality and whether
-     * it is the container end of the relationship.
+     * it  is the container end of the relationship.
      * 
      * @return the endDef2 value.
      */
@@ -484,11 +463,11 @@ public AtlasRelationshipEndDef getEndDef2() {
      * containment and lifecycle.
      * UML terminology is used for the values.
      * 
-     * ASSOCIATION is a relationship with no containment.
+     * ASSOCIATION is a relationship with no containment. 
      * COMPOSITION and AGGREGATION are containment relationships.
      * 
-     * The difference being in the lifecycles of the container and its children.
-     * In the COMPOSITION case, the children cannot exist without the container.
+     * The difference being in the lifecycles of the container and its children. 
+     * In the COMPOSITION case, the children cannot exist without the container. 
      * For AGGREGATION, the life cycles of the container and children are totally independent.
      * 
      * @return the relationshipCategory value.
@@ -517,4 +496,125 @@ public String getRelationshipLabel() {
     public List getAttributeDefs() {
         return this.attributeDefs;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("category", this.category == null ? null : this.category.toString());
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeJsonField("dateFormatter", this.dateFormatter);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeMapField("options", this.options, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("serviceType", this.serviceType);
+        jsonWriter.writeStringField("typeVersion", this.typeVersion);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeNumberField("version", this.version);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeArrayField("entityTypes", this.entityTypes, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("subTypes", this.subTypes, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("superTypes", this.superTypes, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("relationshipAttributeDefs", this.relationshipAttributeDefs,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeStringField("defaultValue", this.defaultValue);
+        jsonWriter.writeArrayField("elementDefs", this.elementDefs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("endDef1", this.endDef1);
+        jsonWriter.writeJsonField("endDef2", this.endDef2);
+        jsonWriter.writeStringField("relationshipCategory",
+            this.relationshipCategory == null ? null : this.relationshipCategory.toString());
+        jsonWriter.writeStringField("relationshipLabel", this.relationshipLabel);
+        jsonWriter.writeArrayField("attributeDefs", this.attributeDefs, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasTypeDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasTypeDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasTypeDef.
+     */
+    @Generated
+    public static AtlasTypeDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasTypeDef deserializedAtlasTypeDef = new AtlasTypeDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("category".equals(fieldName)) {
+                    deserializedAtlasTypeDef.category = TypeCategory.fromString(reader.getString());
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedAtlasTypeDef.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedAtlasTypeDef.createdBy = reader.getString();
+                } else if ("dateFormatter".equals(fieldName)) {
+                    deserializedAtlasTypeDef.dateFormatter = DateFormat.fromJson(reader);
+                } else if ("description".equals(fieldName)) {
+                    deserializedAtlasTypeDef.description = reader.getString();
+                } else if ("guid".equals(fieldName)) {
+                    deserializedAtlasTypeDef.guid = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasTypeDef.name = reader.getString();
+                } else if ("options".equals(fieldName)) {
+                    Map options = reader.readMap(reader1 -> reader1.getString());
+                    deserializedAtlasTypeDef.options = options;
+                } else if ("serviceType".equals(fieldName)) {
+                    deserializedAtlasTypeDef.serviceType = reader.getString();
+                } else if ("typeVersion".equals(fieldName)) {
+                    deserializedAtlasTypeDef.typeVersion = reader.getString();
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedAtlasTypeDef.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedAtlasTypeDef.updatedBy = reader.getString();
+                } else if ("version".equals(fieldName)) {
+                    deserializedAtlasTypeDef.version = reader.getNullable(JsonReader::getLong);
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedAtlasTypeDef.lastModifiedTS = reader.getString();
+                } else if ("entityTypes".equals(fieldName)) {
+                    List entityTypes = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasTypeDef.entityTypes = entityTypes;
+                } else if ("subTypes".equals(fieldName)) {
+                    List subTypes = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasTypeDef.subTypes = subTypes;
+                } else if ("superTypes".equals(fieldName)) {
+                    List superTypes = reader.readArray(reader1 -> reader1.getString());
+                    deserializedAtlasTypeDef.superTypes = superTypes;
+                } else if ("relationshipAttributeDefs".equals(fieldName)) {
+                    List relationshipAttributeDefs
+                        = reader.readArray(reader1 -> AtlasRelationshipAttributeDef.fromJson(reader1));
+                    deserializedAtlasTypeDef.relationshipAttributeDefs = relationshipAttributeDefs;
+                } else if ("defaultValue".equals(fieldName)) {
+                    deserializedAtlasTypeDef.defaultValue = reader.getString();
+                } else if ("elementDefs".equals(fieldName)) {
+                    List elementDefs
+                        = reader.readArray(reader1 -> AtlasEnumElementDef.fromJson(reader1));
+                    deserializedAtlasTypeDef.elementDefs = elementDefs;
+                } else if ("endDef1".equals(fieldName)) {
+                    deserializedAtlasTypeDef.endDef1 = AtlasRelationshipEndDef.fromJson(reader);
+                } else if ("endDef2".equals(fieldName)) {
+                    deserializedAtlasTypeDef.endDef2 = AtlasRelationshipEndDef.fromJson(reader);
+                } else if ("relationshipCategory".equals(fieldName)) {
+                    deserializedAtlasTypeDef.relationshipCategory = RelationshipCategory.fromString(reader.getString());
+                } else if ("relationshipLabel".equals(fieldName)) {
+                    deserializedAtlasTypeDef.relationshipLabel = reader.getString();
+                } else if ("attributeDefs".equals(fieldName)) {
+                    List attributeDefs
+                        = reader.readArray(reader1 -> AtlasAttributeDef.fromJson(reader1));
+                    deserializedAtlasTypeDef.attributeDefs = attributeDefs;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasTypeDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTypeDefHeader.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTypeDefHeader.java
index 34cd050ef63e..f9794e9ab3f4 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTypeDefHeader.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTypeDefHeader.java
@@ -6,32 +6,33 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The basic information of the type definition.
  */
 @Immutable
-public final class AtlasTypeDefHeader {
+public final class AtlasTypeDefHeader implements JsonSerializable {
     /*
      * The enum of type category.
      */
     @Generated
-    @JsonProperty(value = "category")
     private TypeCategory category;
 
     /*
      * The GUID of the type definition.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The name of the type definition.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /**
@@ -70,4 +71,47 @@ public String getGuid() {
     public String getName() {
         return this.name;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("category", this.category == null ? null : this.category.toString());
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("name", this.name);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasTypeDefHeader from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasTypeDefHeader if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasTypeDefHeader.
+     */
+    @Generated
+    public static AtlasTypeDefHeader fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasTypeDefHeader deserializedAtlasTypeDefHeader = new AtlasTypeDefHeader();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("category".equals(fieldName)) {
+                    deserializedAtlasTypeDefHeader.category = TypeCategory.fromString(reader.getString());
+                } else if ("guid".equals(fieldName)) {
+                    deserializedAtlasTypeDefHeader.guid = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedAtlasTypeDefHeader.name = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasTypeDefHeader;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTypesDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTypesDef.java
index f75b2e10fe7b..f936a7db7402 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTypesDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AtlasTypesDef.java
@@ -6,61 +6,58 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The definitions of types.
  */
 @Fluent
-public final class AtlasTypesDef {
+public final class AtlasTypesDef implements JsonSerializable {
     /*
      * businessMetadataDefs
      */
     @Generated
-    @JsonProperty(value = "businessMetadataDefs")
     private List businessMetadataDefs;
 
     /*
      * An array of classification definitions.
      */
     @Generated
-    @JsonProperty(value = "classificationDefs")
     private List classificationDefs;
 
     /*
      * An array of entity definitions.
      */
     @Generated
-    @JsonProperty(value = "entityDefs")
     private List entityDefs;
 
     /*
      * An array of enum definitions.
      */
     @Generated
-    @JsonProperty(value = "enumDefs")
     private List enumDefs;
 
     /*
      * An array of relationship definitions.
      */
     @Generated
-    @JsonProperty(value = "relationshipDefs")
     private List relationshipDefs;
 
     /*
      * An array of struct definitions.
      */
     @Generated
-    @JsonProperty(value = "structDefs")
     private List structDefs;
 
     /*
      * An array of term template definitions.
      */
     @Generated
-    @JsonProperty(value = "termTemplateDefs")
     private List termTemplateDefs;
 
     /**
@@ -223,4 +220,74 @@ public AtlasTypesDef setTermTemplateDefs(List termTemplateDefs)
         this.termTemplateDefs = termTemplateDefs;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("businessMetadataDefs", this.businessMetadataDefs,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("classificationDefs", this.classificationDefs,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("entityDefs", this.entityDefs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("enumDefs", this.enumDefs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("relationshipDefs", this.relationshipDefs,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("structDefs", this.structDefs, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("termTemplateDefs", this.termTemplateDefs,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AtlasTypesDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AtlasTypesDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AtlasTypesDef.
+     */
+    @Generated
+    public static AtlasTypesDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AtlasTypesDef deserializedAtlasTypesDef = new AtlasTypesDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("businessMetadataDefs".equals(fieldName)) {
+                    List businessMetadataDefs
+                        = reader.readArray(reader1 -> AtlasBusinessMetadataDef.fromJson(reader1));
+                    deserializedAtlasTypesDef.businessMetadataDefs = businessMetadataDefs;
+                } else if ("classificationDefs".equals(fieldName)) {
+                    List classificationDefs
+                        = reader.readArray(reader1 -> AtlasClassificationDef.fromJson(reader1));
+                    deserializedAtlasTypesDef.classificationDefs = classificationDefs;
+                } else if ("entityDefs".equals(fieldName)) {
+                    List entityDefs = reader.readArray(reader1 -> AtlasEntityDef.fromJson(reader1));
+                    deserializedAtlasTypesDef.entityDefs = entityDefs;
+                } else if ("enumDefs".equals(fieldName)) {
+                    List enumDefs = reader.readArray(reader1 -> AtlasEnumDef.fromJson(reader1));
+                    deserializedAtlasTypesDef.enumDefs = enumDefs;
+                } else if ("relationshipDefs".equals(fieldName)) {
+                    List relationshipDefs
+                        = reader.readArray(reader1 -> AtlasRelationshipDef.fromJson(reader1));
+                    deserializedAtlasTypesDef.relationshipDefs = relationshipDefs;
+                } else if ("structDefs".equals(fieldName)) {
+                    List structDefs = reader.readArray(reader1 -> AtlasStructDef.fromJson(reader1));
+                    deserializedAtlasTypesDef.structDefs = structDefs;
+                } else if ("termTemplateDefs".equals(fieldName)) {
+                    List termTemplateDefs
+                        = reader.readArray(reader1 -> TermTemplateDef.fromJson(reader1));
+                    deserializedAtlasTypesDef.termTemplateDefs = termTemplateDefs;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAtlasTypesDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AutoCompleteOptions.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AutoCompleteOptions.java
index e66aafd55363..d26ed4345726 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AutoCompleteOptions.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AutoCompleteOptions.java
@@ -6,19 +6,22 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The payload of autocomplete request.
  */
 @Fluent
-public final class AutoCompleteOptions {
+public final class AutoCompleteOptions implements JsonSerializable {
     /*
      * The keywords applied to all fields that support autocomplete operation. It must
      * be at least 1 character, and no more than 100 characters.
      */
     @Generated
-    @JsonProperty(value = "keywords")
     private String keywords;
 
     /*
@@ -26,14 +29,12 @@ public final class AutoCompleteOptions {
      * The value must be a number between 1 and 100.
      */
     @Generated
-    @JsonProperty(value = "limit")
     private Integer limit;
 
     /*
      * The filter for the autocomplete request.
      */
     @Generated
-    @JsonProperty(value = "filter")
     private Object filter;
 
     /**
@@ -112,4 +113,47 @@ public AutoCompleteOptions setFilter(Object filter) {
         this.filter = filter;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("keywords", this.keywords);
+        jsonWriter.writeNumberField("limit", this.limit);
+        jsonWriter.writeUntypedField("filter", this.filter);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AutoCompleteOptions from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AutoCompleteOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AutoCompleteOptions.
+     */
+    @Generated
+    public static AutoCompleteOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AutoCompleteOptions deserializedAutoCompleteOptions = new AutoCompleteOptions();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("keywords".equals(fieldName)) {
+                    deserializedAutoCompleteOptions.keywords = reader.getString();
+                } else if ("limit".equals(fieldName)) {
+                    deserializedAutoCompleteOptions.limit = reader.getNullable(JsonReader::getInt);
+                } else if ("filter".equals(fieldName)) {
+                    deserializedAutoCompleteOptions.filter = reader.readUntyped();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAutoCompleteOptions;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AutoCompleteResult.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AutoCompleteResult.java
index 5873227d5f30..56c10d3c3935 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AutoCompleteResult.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AutoCompleteResult.java
@@ -6,19 +6,22 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The result of the autocomplete request.
  */
 @Immutable
-public final class AutoCompleteResult {
+public final class AutoCompleteResult implements JsonSerializable {
     /*
      * The result value
      */
     @Generated
-    @JsonProperty(value = "value")
     private List value;
 
     /**
@@ -37,4 +40,43 @@ private AutoCompleteResult() {
     public List getValue() {
         return this.value;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AutoCompleteResult from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AutoCompleteResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AutoCompleteResult.
+     */
+    @Generated
+    public static AutoCompleteResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AutoCompleteResult deserializedAutoCompleteResult = new AutoCompleteResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("value".equals(fieldName)) {
+                    List value
+                        = reader.readArray(reader1 -> AutoCompleteResultValue.fromJson(reader1));
+                    deserializedAutoCompleteResult.value = value;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAutoCompleteResult;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AutoCompleteResultValue.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AutoCompleteResultValue.java
index 7f110d8012e3..68daa9529664 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AutoCompleteResultValue.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/AutoCompleteResultValue.java
@@ -6,25 +6,27 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The value item of the autocomplete suggest.
  */
 @Immutable
-public final class AutoCompleteResultValue {
+public final class AutoCompleteResultValue implements JsonSerializable {
     /*
      * The completed term or phrase.
      */
     @Generated
-    @JsonProperty(value = "text")
     private String text;
 
     /*
      * The completed search query text.
      */
     @Generated
-    @JsonProperty(value = "queryPlusText")
     private String queryPlusText;
 
     /**
@@ -53,4 +55,44 @@ public String getText() {
     public String getQueryPlusText() {
         return this.queryPlusText;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("text", this.text);
+        jsonWriter.writeStringField("queryPlusText", this.queryPlusText);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of AutoCompleteResultValue from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of AutoCompleteResultValue if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the AutoCompleteResultValue.
+     */
+    @Generated
+    public static AutoCompleteResultValue fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            AutoCompleteResultValue deserializedAutoCompleteResultValue = new AutoCompleteResultValue();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("text".equals(fieldName)) {
+                    deserializedAutoCompleteResultValue.text = reader.getString();
+                } else if ("queryPlusText".equals(fieldName)) {
+                    deserializedAutoCompleteResultValue.queryPlusText = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedAutoCompleteResultValue;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/BulkImportResult.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/BulkImportResult.java
index aeac6057137b..412c708c8f51 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/BulkImportResult.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/BulkImportResult.java
@@ -6,26 +6,28 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Bulk import result.
  */
 @Immutable
-public final class BulkImportResult {
+public final class BulkImportResult implements JsonSerializable {
     /*
      * failed importInfoList
      */
     @Generated
-    @JsonProperty(value = "failedImportInfoList")
     private List failedImportInfoList;
 
     /*
      * successful importInfoList
      */
     @Generated
-    @JsonProperty(value = "successImportInfoList")
     private List successImportInfoList;
 
     /**
@@ -54,4 +56,48 @@ public List getFailedImportInfoList() {
     public List getSuccessImportInfoList() {
         return this.successImportInfoList;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("failedImportInfoList", this.failedImportInfoList,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("successImportInfoList", this.successImportInfoList,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of BulkImportResult from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of BulkImportResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the BulkImportResult.
+     */
+    @Generated
+    public static BulkImportResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            BulkImportResult deserializedBulkImportResult = new BulkImportResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("failedImportInfoList".equals(fieldName)) {
+                    List failedImportInfoList = reader.readArray(reader1 -> ImportInfo.fromJson(reader1));
+                    deserializedBulkImportResult.failedImportInfoList = failedImportInfoList;
+                } else if ("successImportInfoList".equals(fieldName)) {
+                    List successImportInfoList = reader.readArray(reader1 -> ImportInfo.fromJson(reader1));
+                    deserializedBulkImportResult.successImportInfoList = successImportInfoList;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedBulkImportResult;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/BusinessAttributeUpdateBehavior.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/BusinessAttributeUpdateBehavior.java
index cd435ebc6bbe..5e1da2e40878 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/BusinessAttributeUpdateBehavior.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/BusinessAttributeUpdateBehavior.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -48,7 +47,6 @@ public BusinessAttributeUpdateBehavior() {
      * @return the corresponding BusinessAttributeUpdateBehavior.
      */
     @Generated
-    @JsonCreator
     public static BusinessAttributeUpdateBehavior fromString(String name) {
         return fromString(name, BusinessAttributeUpdateBehavior.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/BusinessMetadataOptions.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/BusinessMetadataOptions.java
index 61c5b5d65d5a..4d45895a90b5 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/BusinessMetadataOptions.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/BusinessMetadataOptions.java
@@ -16,7 +16,7 @@ public final class BusinessMetadataOptions {
      * InputStream of file
      */
     @Generated
-    private FileDetails file;
+    private final FileDetails file;
 
     /**
      * Creates an instance of BusinessMetadataOptions class.
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/CardinalityValue.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/CardinalityValue.java
index 4c4562ca89ba..f89497a460fd 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/CardinalityValue.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/CardinalityValue.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -48,7 +47,6 @@ public CardinalityValue() {
      * @return the corresponding CardinalityValue.
      */
     @Generated
-    @JsonCreator
     public static CardinalityValue fromString(String name) {
         return fromString(name, CardinalityValue.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ClassificationAssociateOptions.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ClassificationAssociateOptions.java
index 0e9e03f21666..f883ba4f9805 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ClassificationAssociateOptions.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ClassificationAssociateOptions.java
@@ -6,27 +6,29 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The request payload for classification association.
  */
 @Fluent
-public final class ClassificationAssociateOptions {
+public final class ClassificationAssociateOptions implements JsonSerializable {
     /*
      * An instance of a classification; it doesn't have an identity, this object
      * exists only when associated with an entity.
      */
     @Generated
-    @JsonProperty(value = "classification")
     private AtlasClassification classification;
 
     /*
      * The GUID of the entity.
      */
     @Generated
-    @JsonProperty(value = "entityGuids")
     private List entityGuids;
 
     /**
@@ -81,4 +83,46 @@ public ClassificationAssociateOptions setEntityGuids(List entityGuids) {
         this.entityGuids = entityGuids;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeJsonField("classification", this.classification);
+        jsonWriter.writeArrayField("entityGuids", this.entityGuids, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ClassificationAssociateOptions from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ClassificationAssociateOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ClassificationAssociateOptions.
+     */
+    @Generated
+    public static ClassificationAssociateOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ClassificationAssociateOptions deserializedClassificationAssociateOptions
+                = new ClassificationAssociateOptions();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("classification".equals(fieldName)) {
+                    deserializedClassificationAssociateOptions.classification = AtlasClassification.fromJson(reader);
+                } else if ("entityGuids".equals(fieldName)) {
+                    List entityGuids = reader.readArray(reader1 -> reader1.getString());
+                    deserializedClassificationAssociateOptions.entityGuids = entityGuids;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedClassificationAssociateOptions;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ContactInfo.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ContactInfo.java
index 58ff3f638c1e..c64893462b11 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ContactInfo.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ContactInfo.java
@@ -6,25 +6,27 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * ContactInfo.
  */
 @Fluent
-public final class ContactInfo {
+public final class ContactInfo implements JsonSerializable {
     /*
      * Azure Active Directory object Id.
      */
     @Generated
-    @JsonProperty(value = "id")
     private String id;
 
     /*
      * additional information to describe this contact.
      */
     @Generated
-    @JsonProperty(value = "info")
     private String info;
 
     /**
@@ -77,4 +79,44 @@ public ContactInfo setInfo(String info) {
         this.info = info;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("info", this.info);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ContactInfo from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ContactInfo if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ContactInfo.
+     */
+    @Generated
+    public static ContactInfo fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ContactInfo deserializedContactInfo = new ContactInfo();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("id".equals(fieldName)) {
+                    deserializedContactInfo.id = reader.getString();
+                } else if ("info".equals(fieldName)) {
+                    deserializedContactInfo.info = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedContactInfo;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ContactSearchResultValue.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ContactSearchResultValue.java
index 94147092d290..f893f1c64bca 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ContactSearchResultValue.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ContactSearchResultValue.java
@@ -6,25 +6,27 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The contact in the search and suggest result.
  */
 @Immutable
-public final class ContactSearchResultValue {
+public final class ContactSearchResultValue implements JsonSerializable {
     /*
      * The GUID of the contact.
      */
     @Generated
-    @JsonProperty(value = "id")
     private String id;
 
     /*
      * The description of the contact.
      */
     @Generated
-    @JsonProperty(value = "info")
     private String info;
 
     /*
@@ -32,7 +34,6 @@ public final class ContactSearchResultValue {
      * Expert or Steward for a glossary term.
      */
     @Generated
-    @JsonProperty(value = "contactType")
     private String contactType;
 
     /**
@@ -72,4 +73,47 @@ public String getInfo() {
     public String getContactType() {
         return this.contactType;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("info", this.info);
+        jsonWriter.writeStringField("contactType", this.contactType);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ContactSearchResultValue from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ContactSearchResultValue if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ContactSearchResultValue.
+     */
+    @Generated
+    public static ContactSearchResultValue fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ContactSearchResultValue deserializedContactSearchResultValue = new ContactSearchResultValue();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("id".equals(fieldName)) {
+                    deserializedContactSearchResultValue.id = reader.getString();
+                } else if ("info".equals(fieldName)) {
+                    deserializedContactSearchResultValue.info = reader.getString();
+                } else if ("contactType".equals(fieldName)) {
+                    deserializedContactSearchResultValue.contactType = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedContactSearchResultValue;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/DateFormat.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/DateFormat.java
index 6da1936ff73c..b0d260c054fb 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/DateFormat.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/DateFormat.java
@@ -6,75 +6,70 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The date format.
  */
 @Fluent
-public final class DateFormat {
+public final class DateFormat implements JsonSerializable {
     /*
      * An array of available locales.
      */
     @Generated
-    @JsonProperty(value = "availableLocales")
     private List availableLocales;
 
     /*
      * Calendar
      */
     @Generated
-    @JsonProperty(value = "calendar")
     private Double calendar;
 
     /*
      * The date format.
      */
     @Generated
-    @JsonProperty(value = "dateInstance")
     private DateFormat dateInstance;
 
     /*
      * The date format.
      */
     @Generated
-    @JsonProperty(value = "dateTimeInstance")
     private DateFormat dateTimeInstance;
 
     /*
      * The date format.
      */
     @Generated
-    @JsonProperty(value = "instance")
     private DateFormat instance;
 
     /*
      * Determines the leniency of the date format.
      */
     @Generated
-    @JsonProperty(value = "lenient")
     private Boolean lenient;
 
     /*
      * The number format.
      */
     @Generated
-    @JsonProperty(value = "numberFormat")
     private NumberFormat numberFormat;
 
     /*
      * The date format.
      */
     @Generated
-    @JsonProperty(value = "timeInstance")
     private DateFormat timeInstance;
 
     /*
      * The timezone information.
      */
     @Generated
-    @JsonProperty(value = "timeZone")
     private TimeZone timeZone;
 
     /**
@@ -281,4 +276,67 @@ public DateFormat setTimeZone(TimeZone timeZone) {
         this.timeZone = timeZone;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("availableLocales", this.availableLocales,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeNumberField("calendar", this.calendar);
+        jsonWriter.writeJsonField("dateInstance", this.dateInstance);
+        jsonWriter.writeJsonField("dateTimeInstance", this.dateTimeInstance);
+        jsonWriter.writeJsonField("instance", this.instance);
+        jsonWriter.writeBooleanField("lenient", this.lenient);
+        jsonWriter.writeJsonField("numberFormat", this.numberFormat);
+        jsonWriter.writeJsonField("timeInstance", this.timeInstance);
+        jsonWriter.writeJsonField("timeZone", this.timeZone);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of DateFormat from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of DateFormat if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the DateFormat.
+     */
+    @Generated
+    public static DateFormat fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            DateFormat deserializedDateFormat = new DateFormat();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("availableLocales".equals(fieldName)) {
+                    List availableLocales = reader.readArray(reader1 -> reader1.getString());
+                    deserializedDateFormat.availableLocales = availableLocales;
+                } else if ("calendar".equals(fieldName)) {
+                    deserializedDateFormat.calendar = reader.getNullable(JsonReader::getDouble);
+                } else if ("dateInstance".equals(fieldName)) {
+                    deserializedDateFormat.dateInstance = DateFormat.fromJson(reader);
+                } else if ("dateTimeInstance".equals(fieldName)) {
+                    deserializedDateFormat.dateTimeInstance = DateFormat.fromJson(reader);
+                } else if ("instance".equals(fieldName)) {
+                    deserializedDateFormat.instance = DateFormat.fromJson(reader);
+                } else if ("lenient".equals(fieldName)) {
+                    deserializedDateFormat.lenient = reader.getNullable(JsonReader::getBoolean);
+                } else if ("numberFormat".equals(fieldName)) {
+                    deserializedDateFormat.numberFormat = NumberFormat.fromJson(reader);
+                } else if ("timeInstance".equals(fieldName)) {
+                    deserializedDateFormat.timeInstance = DateFormat.fromJson(reader);
+                } else if ("timeZone".equals(fieldName)) {
+                    deserializedDateFormat.timeZone = TimeZone.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedDateFormat;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/EntityMutationResult.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/EntityMutationResult.java
index 7fa93038e74d..397476a8b411 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/EntityMutationResult.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/EntityMutationResult.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,26 +18,23 @@
  * The mutation response result of entity.
  */
 @Immutable
-public final class EntityMutationResult {
+public final class EntityMutationResult implements JsonSerializable {
     /*
      * A map of GUID assignments with entities.
      */
     @Generated
-    @JsonProperty(value = "guidAssignments")
     private Map guidAssignments;
 
     /*
      * The entity headers of mutated entities.
      */
     @Generated
-    @JsonProperty(value = "mutatedEntities")
     private Map> mutatedEntities;
 
     /*
      * An array of entity headers that partially updated.
      */
     @Generated
-    @JsonProperty(value = "partialUpdatedEntities")
     private List partialUpdatedEntities;
 
     /**
@@ -72,4 +73,55 @@ public Map> getMutatedEntities() {
     public List getPartialUpdatedEntities() {
         return this.partialUpdatedEntities;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeMapField("guidAssignments", this.guidAssignments,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeMapField("mutatedEntities", this.mutatedEntities,
+            (writer, element) -> writer.writeArray(element, (writer1, element1) -> writer1.writeJson(element1)));
+        jsonWriter.writeArrayField("partialUpdatedEntities", this.partialUpdatedEntities,
+            (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of EntityMutationResult from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of EntityMutationResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the EntityMutationResult.
+     */
+    @Generated
+    public static EntityMutationResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            EntityMutationResult deserializedEntityMutationResult = new EntityMutationResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("guidAssignments".equals(fieldName)) {
+                    Map guidAssignments = reader.readMap(reader1 -> reader1.getString());
+                    deserializedEntityMutationResult.guidAssignments = guidAssignments;
+                } else if ("mutatedEntities".equals(fieldName)) {
+                    Map> mutatedEntities
+                        = reader.readMap(reader1 -> reader1.readArray(reader2 -> AtlasEntityHeader.fromJson(reader2)));
+                    deserializedEntityMutationResult.mutatedEntities = mutatedEntities;
+                } else if ("partialUpdatedEntities".equals(fieldName)) {
+                    List partialUpdatedEntities
+                        = reader.readArray(reader1 -> AtlasEntityHeader.fromJson(reader1));
+                    deserializedEntityMutationResult.partialUpdatedEntities = partialUpdatedEntities;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedEntityMutationResult;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/EntityStatus.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/EntityStatus.java
index cb21860c168c..43641f6dacdd 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/EntityStatus.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/EntityStatus.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public EntityStatus() {
      * @return the corresponding EntityStatus.
      */
     @Generated
-    @JsonCreator
     public static EntityStatus fromString(String name) {
         return fromString(name, EntityStatus.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/FileDetails.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/FileDetails.java
index 98dc55b1b995..a83c42d51141 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/FileDetails.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/FileDetails.java
@@ -17,7 +17,7 @@ public final class FileDetails {
      * The content of the file
      */
     @Generated
-    private BinaryData content;
+    private final BinaryData content;
 
     /*
      * The filename of the file
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ImportInfo.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ImportInfo.java
index 89736114981e..834e786867d0 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ImportInfo.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ImportInfo.java
@@ -6,39 +6,39 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * ImportInfo.
  */
 @Immutable
-public final class ImportInfo {
+public final class ImportInfo implements JsonSerializable {
     /*
      * childObjectName
      */
     @Generated
-    @JsonProperty(value = "childObjectName")
     private String childObjectName;
 
     /*
      * importStatus
      */
     @Generated
-    @JsonProperty(value = "importStatus")
     private ImportStatus importStatus;
 
     /*
      * parentObjectName
      */
     @Generated
-    @JsonProperty(value = "parentObjectName")
     private String parentObjectName;
 
     /*
      * remarks
      */
     @Generated
-    @JsonProperty(value = "remarks")
     private String remarks;
 
     /**
@@ -87,4 +87,50 @@ public String getParentObjectName() {
     public String getRemarks() {
         return this.remarks;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("childObjectName", this.childObjectName);
+        jsonWriter.writeStringField("importStatus", this.importStatus == null ? null : this.importStatus.toString());
+        jsonWriter.writeStringField("parentObjectName", this.parentObjectName);
+        jsonWriter.writeStringField("remarks", this.remarks);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ImportInfo from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ImportInfo if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ImportInfo.
+     */
+    @Generated
+    public static ImportInfo fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ImportInfo deserializedImportInfo = new ImportInfo();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("childObjectName".equals(fieldName)) {
+                    deserializedImportInfo.childObjectName = reader.getString();
+                } else if ("importStatus".equals(fieldName)) {
+                    deserializedImportInfo.importStatus = ImportStatus.fromString(reader.getString());
+                } else if ("parentObjectName".equals(fieldName)) {
+                    deserializedImportInfo.parentObjectName = reader.getString();
+                } else if ("remarks".equals(fieldName)) {
+                    deserializedImportInfo.remarks = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedImportInfo;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ImportStatus.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ImportStatus.java
index a483868112f8..c0b0a8ffb017 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ImportStatus.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ImportStatus.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public ImportStatus() {
      * @return the corresponding ImportStatus.
      */
     @Generated
-    @JsonCreator
     public static ImportStatus fromString(String name) {
         return fromString(name, ImportStatus.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/LineageDirection.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/LineageDirection.java
index 41e23bec4c2b..76dbcec4c4e0 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/LineageDirection.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/LineageDirection.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -48,7 +47,6 @@ public LineageDirection() {
      * @return the corresponding LineageDirection.
      */
     @Generated
-    @JsonCreator
     public static LineageDirection fromString(String name) {
         return fromString(name, LineageDirection.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/LineageRelation.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/LineageRelation.java
index 81cf00290ecf..29ab2ef969bb 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/LineageRelation.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/LineageRelation.java
@@ -6,32 +6,33 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The lineage relation with GUID of the from and to entity.
  */
 @Immutable
-public final class LineageRelation {
+public final class LineageRelation implements JsonSerializable {
     /*
      * The GUID of from-entity.
      */
     @Generated
-    @JsonProperty(value = "fromEntityId")
     private String fromEntityId;
 
     /*
      * The GUID of relationship.
      */
     @Generated
-    @JsonProperty(value = "relationshipId")
     private String relationshipId;
 
     /*
      * The GUID of to-entity.
      */
     @Generated
-    @JsonProperty(value = "toEntityId")
     private String toEntityId;
 
     /**
@@ -70,4 +71,47 @@ public String getRelationshipId() {
     public String getToEntityId() {
         return this.toEntityId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("fromEntityId", this.fromEntityId);
+        jsonWriter.writeStringField("relationshipId", this.relationshipId);
+        jsonWriter.writeStringField("toEntityId", this.toEntityId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of LineageRelation from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of LineageRelation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the LineageRelation.
+     */
+    @Generated
+    public static LineageRelation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            LineageRelation deserializedLineageRelation = new LineageRelation();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("fromEntityId".equals(fieldName)) {
+                    deserializedLineageRelation.fromEntityId = reader.getString();
+                } else if ("relationshipId".equals(fieldName)) {
+                    deserializedLineageRelation.relationshipId = reader.getString();
+                } else if ("toEntityId".equals(fieldName)) {
+                    deserializedLineageRelation.toEntityId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedLineageRelation;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/MoveEntitiesOptions.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/MoveEntitiesOptions.java
index 3c45a5120891..3040be876cc1 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/MoveEntitiesOptions.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/MoveEntitiesOptions.java
@@ -6,19 +6,22 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * MoveEntitiesOptions.
  */
 @Fluent
-public final class MoveEntitiesOptions {
+public final class MoveEntitiesOptions implements JsonSerializable {
     /*
      * An array of entity guids to be moved to target collection.
      */
     @Generated
-    @JsonProperty(value = "entityGuids")
     private List entityGuids;
 
     /**
@@ -49,4 +52,42 @@ public MoveEntitiesOptions setEntityGuids(List entityGuids) {
         this.entityGuids = entityGuids;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("entityGuids", this.entityGuids, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of MoveEntitiesOptions from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of MoveEntitiesOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the MoveEntitiesOptions.
+     */
+    @Generated
+    public static MoveEntitiesOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            MoveEntitiesOptions deserializedMoveEntitiesOptions = new MoveEntitiesOptions();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("entityGuids".equals(fieldName)) {
+                    List entityGuids = reader.readArray(reader1 -> reader1.getString());
+                    deserializedMoveEntitiesOptions.entityGuids = entityGuids;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedMoveEntitiesOptions;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/NumberFormat.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/NumberFormat.java
index cd41d14f7ee3..f6290e0eebd1 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/NumberFormat.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/NumberFormat.java
@@ -6,110 +6,100 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The number format.
  */
 @Fluent
-public final class NumberFormat {
+public final class NumberFormat implements JsonSerializable {
     /*
      * The number format.
      */
     @Generated
-    @JsonProperty(value = "availableLocales")
     private List availableLocales;
 
     /*
      * The currency.
      */
     @Generated
-    @JsonProperty(value = "currency")
     private String currency;
 
     /*
      * The number format.
      */
     @Generated
-    @JsonProperty(value = "currencyInstance")
     private NumberFormat currencyInstance;
 
     /*
      * Determines if grouping is used.
      */
     @Generated
-    @JsonProperty(value = "groupingUsed")
     private Boolean groupingUsed;
 
     /*
      * The number format.
      */
     @Generated
-    @JsonProperty(value = "instance")
     private NumberFormat instance;
 
     /*
      * The number format.
      */
     @Generated
-    @JsonProperty(value = "integerInstance")
     private NumberFormat integerInstance;
 
     /*
      * The maximum of fraction digits.
      */
     @Generated
-    @JsonProperty(value = "maximumFractionDigits")
     private Integer maximumFractionDigits;
 
     /*
      * The maximum of integer digits.
      */
     @Generated
-    @JsonProperty(value = "maximumIntegerDigits")
     private Integer maximumIntegerDigits;
 
     /*
      * The minimum of fraction digits.
      */
     @Generated
-    @JsonProperty(value = "minimumFractionDigits")
     private Integer minimumFractionDigits;
 
     /*
      * The minimum of integer digits.
      */
     @Generated
-    @JsonProperty(value = "minimumIntegerDigits")
     private Integer minimumIntegerDigits;
 
     /*
      * The number format.
      */
     @Generated
-    @JsonProperty(value = "numberInstance")
     private NumberFormat numberInstance;
 
     /*
      * Determines if only integer is parsed.
      */
     @Generated
-    @JsonProperty(value = "parseIntegerOnly")
     private Boolean parseIntegerOnly;
 
     /*
      * The number format.
      */
     @Generated
-    @JsonProperty(value = "percentInstance")
     private NumberFormat percentInstance;
 
     /*
      * The enum of rounding mode.
      */
     @Generated
-    @JsonProperty(value = "roundingMode")
     private RoundingMode roundingMode;
 
     /**
@@ -426,4 +416,82 @@ public NumberFormat setRoundingMode(RoundingMode roundingMode) {
         this.roundingMode = roundingMode;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("availableLocales", this.availableLocales,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("currency", this.currency);
+        jsonWriter.writeJsonField("currencyInstance", this.currencyInstance);
+        jsonWriter.writeBooleanField("groupingUsed", this.groupingUsed);
+        jsonWriter.writeJsonField("instance", this.instance);
+        jsonWriter.writeJsonField("integerInstance", this.integerInstance);
+        jsonWriter.writeNumberField("maximumFractionDigits", this.maximumFractionDigits);
+        jsonWriter.writeNumberField("maximumIntegerDigits", this.maximumIntegerDigits);
+        jsonWriter.writeNumberField("minimumFractionDigits", this.minimumFractionDigits);
+        jsonWriter.writeNumberField("minimumIntegerDigits", this.minimumIntegerDigits);
+        jsonWriter.writeJsonField("numberInstance", this.numberInstance);
+        jsonWriter.writeBooleanField("parseIntegerOnly", this.parseIntegerOnly);
+        jsonWriter.writeJsonField("percentInstance", this.percentInstance);
+        jsonWriter.writeStringField("roundingMode", this.roundingMode == null ? null : this.roundingMode.toString());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of NumberFormat from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of NumberFormat if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the NumberFormat.
+     */
+    @Generated
+    public static NumberFormat fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            NumberFormat deserializedNumberFormat = new NumberFormat();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("availableLocales".equals(fieldName)) {
+                    List availableLocales = reader.readArray(reader1 -> reader1.getString());
+                    deserializedNumberFormat.availableLocales = availableLocales;
+                } else if ("currency".equals(fieldName)) {
+                    deserializedNumberFormat.currency = reader.getString();
+                } else if ("currencyInstance".equals(fieldName)) {
+                    deserializedNumberFormat.currencyInstance = NumberFormat.fromJson(reader);
+                } else if ("groupingUsed".equals(fieldName)) {
+                    deserializedNumberFormat.groupingUsed = reader.getNullable(JsonReader::getBoolean);
+                } else if ("instance".equals(fieldName)) {
+                    deserializedNumberFormat.instance = NumberFormat.fromJson(reader);
+                } else if ("integerInstance".equals(fieldName)) {
+                    deserializedNumberFormat.integerInstance = NumberFormat.fromJson(reader);
+                } else if ("maximumFractionDigits".equals(fieldName)) {
+                    deserializedNumberFormat.maximumFractionDigits = reader.getNullable(JsonReader::getInt);
+                } else if ("maximumIntegerDigits".equals(fieldName)) {
+                    deserializedNumberFormat.maximumIntegerDigits = reader.getNullable(JsonReader::getInt);
+                } else if ("minimumFractionDigits".equals(fieldName)) {
+                    deserializedNumberFormat.minimumFractionDigits = reader.getNullable(JsonReader::getInt);
+                } else if ("minimumIntegerDigits".equals(fieldName)) {
+                    deserializedNumberFormat.minimumIntegerDigits = reader.getNullable(JsonReader::getInt);
+                } else if ("numberInstance".equals(fieldName)) {
+                    deserializedNumberFormat.numberInstance = NumberFormat.fromJson(reader);
+                } else if ("parseIntegerOnly".equals(fieldName)) {
+                    deserializedNumberFormat.parseIntegerOnly = reader.getNullable(JsonReader::getBoolean);
+                } else if ("percentInstance".equals(fieldName)) {
+                    deserializedNumberFormat.percentInstance = NumberFormat.fromJson(reader);
+                } else if ("roundingMode".equals(fieldName)) {
+                    deserializedNumberFormat.roundingMode = RoundingMode.fromString(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedNumberFormat;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ParentRelation.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ParentRelation.java
index 30ceb02551f5..faf7ea99fa48 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ParentRelation.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ParentRelation.java
@@ -6,32 +6,33 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The lineage parents relation with GUID of the parent entity and to child entity.
  */
 @Immutable
-public final class ParentRelation {
+public final class ParentRelation implements JsonSerializable {
     /*
      * The GUID of child entity.
      */
     @Generated
-    @JsonProperty(value = "childEntityId")
     private String childEntityId;
 
     /*
      * The GUID of relationship.
      */
     @Generated
-    @JsonProperty(value = "relationshipId")
     private String relationshipId;
 
     /*
      * The GUID of parent entity.
      */
     @Generated
-    @JsonProperty(value = "parentEntityId")
     private String parentEntityId;
 
     /**
@@ -70,4 +71,47 @@ public String getRelationshipId() {
     public String getParentEntityId() {
         return this.parentEntityId;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("childEntityId", this.childEntityId);
+        jsonWriter.writeStringField("relationshipId", this.relationshipId);
+        jsonWriter.writeStringField("parentEntityId", this.parentEntityId);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ParentRelation from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ParentRelation if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ParentRelation.
+     */
+    @Generated
+    public static ParentRelation fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ParentRelation deserializedParentRelation = new ParentRelation();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("childEntityId".equals(fieldName)) {
+                    deserializedParentRelation.childEntityId = reader.getString();
+                } else if ("relationshipId".equals(fieldName)) {
+                    deserializedParentRelation.relationshipId = reader.getString();
+                } else if ("parentEntityId".equals(fieldName)) {
+                    deserializedParentRelation.parentEntityId = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedParentRelation;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/PurviewObjectId.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/PurviewObjectId.java
index 335743e7a58c..68aa6d0714b7 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/PurviewObjectId.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/PurviewObjectId.java
@@ -6,68 +6,64 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.Map;
 
 /**
  * PurviewObjectId.
  */
 @Fluent
-public final class PurviewObjectId {
+public final class PurviewObjectId implements JsonSerializable {
     /*
      * The GUID of the object.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The name of the type.
      */
     @Generated
-    @JsonProperty(value = "typeName")
     private String typeName;
 
     /*
      * The unique attributes of the object.
      */
     @Generated
-    @JsonProperty(value = "uniqueAttributes")
     private Map uniqueAttributes;
 
     /*
      * Name
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * Display text
      */
     @Generated
-    @JsonProperty(value = "displayText")
     private String displayText;
 
     /*
      * Item path
      */
     @Generated
-    @JsonProperty(value = "itemPath")
     private String itemPath;
 
     /*
      * Resource Id
      */
     @Generated
-    @JsonProperty(value = "resourceId")
     private String resourceId;
 
     /*
      * Dictionary of 
      */
     @Generated
-    @JsonProperty(value = "properties")
     private Map properties;
 
     /**
@@ -252,4 +248,65 @@ public PurviewObjectId setProperties(Map properties) {
         this.properties = properties;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("typeName", this.typeName);
+        jsonWriter.writeMapField("uniqueAttributes", this.uniqueAttributes,
+            (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("displayText", this.displayText);
+        jsonWriter.writeStringField("itemPath", this.itemPath);
+        jsonWriter.writeStringField("resourceId", this.resourceId);
+        jsonWriter.writeMapField("properties", this.properties, (writer, element) -> writer.writeUntyped(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of PurviewObjectId from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of PurviewObjectId if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the PurviewObjectId.
+     */
+    @Generated
+    public static PurviewObjectId fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            PurviewObjectId deserializedPurviewObjectId = new PurviewObjectId();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("guid".equals(fieldName)) {
+                    deserializedPurviewObjectId.guid = reader.getString();
+                } else if ("typeName".equals(fieldName)) {
+                    deserializedPurviewObjectId.typeName = reader.getString();
+                } else if ("uniqueAttributes".equals(fieldName)) {
+                    Map uniqueAttributes = reader.readMap(reader1 -> reader1.readUntyped());
+                    deserializedPurviewObjectId.uniqueAttributes = uniqueAttributes;
+                } else if ("name".equals(fieldName)) {
+                    deserializedPurviewObjectId.name = reader.getString();
+                } else if ("displayText".equals(fieldName)) {
+                    deserializedPurviewObjectId.displayText = reader.getString();
+                } else if ("itemPath".equals(fieldName)) {
+                    deserializedPurviewObjectId.itemPath = reader.getString();
+                } else if ("resourceId".equals(fieldName)) {
+                    deserializedPurviewObjectId.resourceId = reader.getString();
+                } else if ("properties".equals(fieldName)) {
+                    Map properties = reader.readMap(reader1 -> reader1.readUntyped());
+                    deserializedPurviewObjectId.properties = properties;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedPurviewObjectId;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/QueryOptions.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/QueryOptions.java
index e5d131145f3e..766079f4fac9 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/QueryOptions.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/QueryOptions.java
@@ -6,19 +6,22 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The search query of advanced search request.
  */
 @Fluent
-public final class QueryOptions {
+public final class QueryOptions implements JsonSerializable {
     /*
      * The keywords applied to all searchable fields.
      */
     @Generated
-    @JsonProperty(value = "keywords")
     private String keywords;
 
     /*
@@ -26,7 +29,6 @@ public final class QueryOptions {
      * value is 1000.
      */
     @Generated
-    @JsonProperty(value = "limit")
     private Integer limit;
 
     /*
@@ -34,35 +36,30 @@ public final class QueryOptions {
      * batch, and will return new token in each response unless there's no more data.
      */
     @Generated
-    @JsonProperty(value = "continuationToken")
     private String continuationToken;
 
     /*
      * The sort order of search results, can specify multiple fields.
      */
     @Generated
-    @JsonProperty(value = "orderby")
     private List orderby;
 
     /*
      * The filter for the search. See examples for the usage of supported filters.
      */
     @Generated
-    @JsonProperty(value = "filter")
     private Object filter;
 
     /*
      * The facets for search. See examples for the usage of supported facets.
      */
     @Generated
-    @JsonProperty(value = "facets")
     private List facets;
 
     /*
      * The taxonomy setting for search.
      */
     @Generated
-    @JsonProperty(value = "taxonomySetting")
     private SearchTaxonomySetting taxonomySetting;
 
     /**
@@ -229,4 +226,61 @@ public QueryOptions setTaxonomySetting(SearchTaxonomySetting taxonomySetting) {
         this.taxonomySetting = taxonomySetting;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("keywords", this.keywords);
+        jsonWriter.writeNumberField("limit", this.limit);
+        jsonWriter.writeStringField("continuationToken", this.continuationToken);
+        jsonWriter.writeArrayField("orderby", this.orderby, (writer, element) -> writer.writeUntyped(element));
+        jsonWriter.writeUntypedField("filter", this.filter);
+        jsonWriter.writeArrayField("facets", this.facets, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeJsonField("taxonomySetting", this.taxonomySetting);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of QueryOptions from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of QueryOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the QueryOptions.
+     */
+    @Generated
+    public static QueryOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            QueryOptions deserializedQueryOptions = new QueryOptions();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("keywords".equals(fieldName)) {
+                    deserializedQueryOptions.keywords = reader.getString();
+                } else if ("limit".equals(fieldName)) {
+                    deserializedQueryOptions.limit = reader.getNullable(JsonReader::getInt);
+                } else if ("continuationToken".equals(fieldName)) {
+                    deserializedQueryOptions.continuationToken = reader.getString();
+                } else if ("orderby".equals(fieldName)) {
+                    List orderby = reader.readArray(reader1 -> reader1.readUntyped());
+                    deserializedQueryOptions.orderby = orderby;
+                } else if ("filter".equals(fieldName)) {
+                    deserializedQueryOptions.filter = reader.readUntyped();
+                } else if ("facets".equals(fieldName)) {
+                    List facets = reader.readArray(reader1 -> SearchFacetItem.fromJson(reader1));
+                    deserializedQueryOptions.facets = facets;
+                } else if ("taxonomySetting".equals(fieldName)) {
+                    deserializedQueryOptions.taxonomySetting = SearchTaxonomySetting.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedQueryOptions;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/QueryResult.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/QueryResult.java
index 7fb476a96dc0..bc56abae66ee 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/QueryResult.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/QueryResult.java
@@ -6,34 +6,35 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The result of the search result.
  */
 @Immutable
-public final class QueryResult {
+public final class QueryResult implements JsonSerializable {
     /*
      * The total number of search results (not the number of documents in a single
      * page).
      */
     @Generated
-    @JsonProperty(value = "@search.count")
     private Integer searchCount;
 
     /*
      * 'True' if the '@search.count' is an approximate value and vise versa.
      */
     @Generated
-    @JsonProperty(value = "@search.count.approximate")
     private Boolean searchCountApproximate;
 
     /*
      * The token used to get next batch of data. Absent if there's no more data.
      */
     @Generated
-    @JsonProperty(value = "continuationToken")
     private String continuationToken;
 
     /*
@@ -42,14 +43,12 @@ public final class QueryResult {
      * the facet is returned as an element of @search.facets.
      */
     @Generated
-    @JsonProperty(value = "@search.facets")
     private SearchFacetResultValue searchFacets;
 
     /*
      * Search result value
      */
     @Generated
-    @JsonProperty(value = "value")
     private List value;
 
     /**
@@ -71,8 +70,7 @@ public Integer getSearchCount() {
     }
 
     /**
-     * Get the searchCountApproximate property: 'True' if the '@search.count' is an approximate value and vise
-     * versa.
+     * Get the searchCountApproximate property: 'True' if the '@search.count' is an approximate value and vise versa.
      * 
      * @return the searchCountApproximate value.
      */
@@ -112,4 +110,54 @@ public SearchFacetResultValue getSearchFacets() {
     public List getValue() {
         return this.value;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("@search.count", this.searchCount);
+        jsonWriter.writeBooleanField("@search.count.approximate", this.searchCountApproximate);
+        jsonWriter.writeStringField("continuationToken", this.continuationToken);
+        jsonWriter.writeJsonField("@search.facets", this.searchFacets);
+        jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of QueryResult from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of QueryResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the QueryResult.
+     */
+    @Generated
+    public static QueryResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            QueryResult deserializedQueryResult = new QueryResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("@search.count".equals(fieldName)) {
+                    deserializedQueryResult.searchCount = reader.getNullable(JsonReader::getInt);
+                } else if ("@search.count.approximate".equals(fieldName)) {
+                    deserializedQueryResult.searchCountApproximate = reader.getNullable(JsonReader::getBoolean);
+                } else if ("continuationToken".equals(fieldName)) {
+                    deserializedQueryResult.continuationToken = reader.getString();
+                } else if ("@search.facets".equals(fieldName)) {
+                    deserializedQueryResult.searchFacets = SearchFacetResultValue.fromJson(reader);
+                } else if ("value".equals(fieldName)) {
+                    List value = reader.readArray(reader1 -> SearchResultValue.fromJson(reader1));
+                    deserializedQueryResult.value = value;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedQueryResult;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/RelationshipCategory.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/RelationshipCategory.java
index 8017d7226bc2..470852f9694b 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/RelationshipCategory.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/RelationshipCategory.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -48,7 +47,6 @@ public RelationshipCategory() {
      * @return the corresponding RelationshipCategory.
      */
     @Generated
-    @JsonCreator
     public static RelationshipCategory fromString(String name) {
         return fromString(name, RelationshipCategory.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ResourceLink.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ResourceLink.java
index 348fee24a423..dbe01dd61bcd 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ResourceLink.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/ResourceLink.java
@@ -6,25 +6,27 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * ResourceLink.
  */
 @Fluent
-public final class ResourceLink {
+public final class ResourceLink implements JsonSerializable {
     /*
      * Display name for url.
      */
     @Generated
-    @JsonProperty(value = "displayName")
     private String displayName;
 
     /*
      * web url. http or https
      */
     @Generated
-    @JsonProperty(value = "url")
     private String url;
 
     /**
@@ -77,4 +79,44 @@ public ResourceLink setUrl(String url) {
         this.url = url;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("displayName", this.displayName);
+        jsonWriter.writeStringField("url", this.url);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of ResourceLink from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of ResourceLink if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the ResourceLink.
+     */
+    @Generated
+    public static ResourceLink fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            ResourceLink deserializedResourceLink = new ResourceLink();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("displayName".equals(fieldName)) {
+                    deserializedResourceLink.displayName = reader.getString();
+                } else if ("url".equals(fieldName)) {
+                    deserializedResourceLink.url = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedResourceLink;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/RoundingMode.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/RoundingMode.java
index c128320f8733..52243ad17a81 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/RoundingMode.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/RoundingMode.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -78,7 +77,6 @@ public RoundingMode() {
      * @return the corresponding RoundingMode.
      */
     @Generated
-    @JsonCreator
     public static RoundingMode fromString(String name) {
         return fromString(name, RoundingMode.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetItem.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetItem.java
index 0a83a22433a9..98fb93542d20 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetItem.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetItem.java
@@ -6,32 +6,33 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The content of a search facet result item.
  */
 @Fluent
-public final class SearchFacetItem {
+public final class SearchFacetItem implements JsonSerializable {
     /*
      * The count of the facet item.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Integer count;
 
     /*
      * The name of the facet item.
      */
     @Generated
-    @JsonProperty(value = "facet")
     private String facet;
 
     /*
      * Define the sorting criteria for items
      */
     @Generated
-    @JsonProperty(value = "sort")
     private SearchFacetSort sort;
 
     /**
@@ -106,4 +107,47 @@ public SearchFacetItem setSort(SearchFacetSort sort) {
         this.sort = sort;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeStringField("facet", this.facet);
+        jsonWriter.writeJsonField("sort", this.sort);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SearchFacetItem from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SearchFacetItem if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SearchFacetItem.
+     */
+    @Generated
+    public static SearchFacetItem fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SearchFacetItem deserializedSearchFacetItem = new SearchFacetItem();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("count".equals(fieldName)) {
+                    deserializedSearchFacetItem.count = reader.getNullable(JsonReader::getInt);
+                } else if ("facet".equals(fieldName)) {
+                    deserializedSearchFacetItem.facet = reader.getString();
+                } else if ("sort".equals(fieldName)) {
+                    deserializedSearchFacetItem.sort = SearchFacetSort.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedSearchFacetItem;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetItemValue.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetItemValue.java
index a4984ae96d32..e75c18d991f2 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetItemValue.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetItemValue.java
@@ -6,25 +6,27 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The content of a search facet result item.
  */
 @Immutable
-public final class SearchFacetItemValue {
+public final class SearchFacetItemValue implements JsonSerializable {
     /*
      * The count of the facet item.
      */
     @Generated
-    @JsonProperty(value = "count")
     private Integer count;
 
     /*
      * The name of the facet item.
      */
     @Generated
-    @JsonProperty(value = "value")
     private String value;
 
     /**
@@ -53,4 +55,44 @@ public Integer getCount() {
     public String getValue() {
         return this.value;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("count", this.count);
+        jsonWriter.writeStringField("value", this.value);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SearchFacetItemValue from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SearchFacetItemValue if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SearchFacetItemValue.
+     */
+    @Generated
+    public static SearchFacetItemValue fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SearchFacetItemValue deserializedSearchFacetItemValue = new SearchFacetItemValue();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("count".equals(fieldName)) {
+                    deserializedSearchFacetItemValue.count = reader.getNullable(JsonReader::getInt);
+                } else if ("value".equals(fieldName)) {
+                    deserializedSearchFacetItemValue.value = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedSearchFacetItemValue;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetResultValue.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetResultValue.java
index bde250a05610..ede1d736a91e 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetResultValue.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetResultValue.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -15,75 +19,65 @@
  * the facet is returned as an element of @search.facets.
  */
 @Immutable
-public final class SearchFacetResultValue {
+public final class SearchFacetResultValue implements JsonSerializable {
     /*
      * Entity type
      */
     @Generated
-    @JsonProperty(value = "entityType")
     private List entityType;
 
     /*
      * Asset type
      */
     @Generated
-    @JsonProperty(value = "assetType")
     private List assetType;
 
     /*
      * Classification
      */
     @Generated
-    @JsonProperty(value = "classification")
     private List classification;
 
     /*
      * Term
      */
     @Generated
-    @JsonProperty(value = "term")
     private List term;
 
     /*
      * Contact id
      */
     @Generated
-    @JsonProperty(value = "contactId")
     private List contactId;
 
     /*
      * Contact type
      */
     @Generated
-    @JsonProperty(value = "contactType")
     private List contactType;
 
     /*
      * Label
      */
     @Generated
-    @JsonProperty(value = "label")
     private List label;
 
     /*
      * Glossary type
      */
     @Generated
-    @JsonProperty(value = "glossaryType")
     private List glossaryType;
 
     /*
      * Term status
      */
     @Generated
-    @JsonProperty(value = "termStatus")
     private List termStatus;
 
     /*
      * Term template
      */
     @Generated
-    @JsonProperty(value = "termTemplate")
     private List termTemplate;
 
     /**
@@ -192,4 +186,89 @@ public List getTermStatus() {
     public List getTermTemplate() {
         return this.termTemplate;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("entityType", this.entityType, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("assetType", this.assetType, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("classification", this.classification,
+            (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("term", this.term, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("contactId", this.contactId, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("contactType", this.contactType, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("label", this.label, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("glossaryType", this.glossaryType, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("termStatus", this.termStatus, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("termTemplate", this.termTemplate, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SearchFacetResultValue from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SearchFacetResultValue if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SearchFacetResultValue.
+     */
+    @Generated
+    public static SearchFacetResultValue fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SearchFacetResultValue deserializedSearchFacetResultValue = new SearchFacetResultValue();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("entityType".equals(fieldName)) {
+                    List entityType
+                        = reader.readArray(reader1 -> SearchFacetItemValue.fromJson(reader1));
+                    deserializedSearchFacetResultValue.entityType = entityType;
+                } else if ("assetType".equals(fieldName)) {
+                    List assetType
+                        = reader.readArray(reader1 -> SearchFacetItemValue.fromJson(reader1));
+                    deserializedSearchFacetResultValue.assetType = assetType;
+                } else if ("classification".equals(fieldName)) {
+                    List classification
+                        = reader.readArray(reader1 -> SearchFacetItemValue.fromJson(reader1));
+                    deserializedSearchFacetResultValue.classification = classification;
+                } else if ("term".equals(fieldName)) {
+                    List term
+                        = reader.readArray(reader1 -> SearchFacetItemValue.fromJson(reader1));
+                    deserializedSearchFacetResultValue.term = term;
+                } else if ("contactId".equals(fieldName)) {
+                    List contactId
+                        = reader.readArray(reader1 -> SearchFacetItemValue.fromJson(reader1));
+                    deserializedSearchFacetResultValue.contactId = contactId;
+                } else if ("contactType".equals(fieldName)) {
+                    List contactType
+                        = reader.readArray(reader1 -> SearchFacetItemValue.fromJson(reader1));
+                    deserializedSearchFacetResultValue.contactType = contactType;
+                } else if ("label".equals(fieldName)) {
+                    List label
+                        = reader.readArray(reader1 -> SearchFacetItemValue.fromJson(reader1));
+                    deserializedSearchFacetResultValue.label = label;
+                } else if ("glossaryType".equals(fieldName)) {
+                    List glossaryType
+                        = reader.readArray(reader1 -> SearchFacetItemValue.fromJson(reader1));
+                    deserializedSearchFacetResultValue.glossaryType = glossaryType;
+                } else if ("termStatus".equals(fieldName)) {
+                    List termStatus
+                        = reader.readArray(reader1 -> SearchFacetItemValue.fromJson(reader1));
+                    deserializedSearchFacetResultValue.termStatus = termStatus;
+                } else if ("termTemplate".equals(fieldName)) {
+                    List termTemplate
+                        = reader.readArray(reader1 -> SearchFacetItemValue.fromJson(reader1));
+                    deserializedSearchFacetResultValue.termTemplate = termTemplate;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedSearchFacetResultValue;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetSort.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetSort.java
index 4a9b71d141bb..68d7940c5308 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetSort.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchFacetSort.java
@@ -6,25 +6,27 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The sorting criteria.
  */
 @Fluent
-public final class SearchFacetSort {
+public final class SearchFacetSort implements JsonSerializable {
     /*
      * Order by count
      */
     @Generated
-    @JsonProperty(value = "count")
     private SearchSortOrder count;
 
     /*
      * Order by value
      */
     @Generated
-    @JsonProperty(value = "value")
     private SearchSortOrder value;
 
     /**
@@ -77,4 +79,44 @@ public SearchFacetSort setValue(SearchSortOrder value) {
         this.value = value;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("count", this.count == null ? null : this.count.toString());
+        jsonWriter.writeStringField("value", this.value == null ? null : this.value.toString());
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SearchFacetSort from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SearchFacetSort if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SearchFacetSort.
+     */
+    @Generated
+    public static SearchFacetSort fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SearchFacetSort deserializedSearchFacetSort = new SearchFacetSort();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("count".equals(fieldName)) {
+                    deserializedSearchFacetSort.count = SearchSortOrder.fromString(reader.getString());
+                } else if ("value".equals(fieldName)) {
+                    deserializedSearchFacetSort.value = SearchSortOrder.fromString(reader.getString());
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedSearchFacetSort;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchHighlights.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchHighlights.java
index 18ae9fed05b5..d241b25192f8 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchHighlights.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchHighlights.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -16,40 +20,35 @@
  * @search.highlights.
  */
 @Immutable
-public final class SearchHighlights {
+public final class SearchHighlights implements JsonSerializable {
     /*
      * Id
      */
     @Generated
-    @JsonProperty(value = "id")
     private List id;
 
     /*
      * Qualified name
      */
     @Generated
-    @JsonProperty(value = "qualifiedName")
     private List qualifiedName;
 
     /*
      * Name
      */
     @Generated
-    @JsonProperty(value = "name")
     private List name;
 
     /*
      * Description
      */
     @Generated
-    @JsonProperty(value = "description")
     private List description;
 
     /*
      * Entity type
      */
     @Generated
-    @JsonProperty(value = "entityType")
     private List entityType;
 
     /**
@@ -108,4 +107,59 @@ public List getDescription() {
     public List getEntityType() {
         return this.entityType;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("id", this.id, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("qualifiedName", this.qualifiedName,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("name", this.name, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("description", this.description, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("entityType", this.entityType, (writer, element) -> writer.writeString(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SearchHighlights from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SearchHighlights if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SearchHighlights.
+     */
+    @Generated
+    public static SearchHighlights fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SearchHighlights deserializedSearchHighlights = new SearchHighlights();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("id".equals(fieldName)) {
+                    List id = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSearchHighlights.id = id;
+                } else if ("qualifiedName".equals(fieldName)) {
+                    List qualifiedName = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSearchHighlights.qualifiedName = qualifiedName;
+                } else if ("name".equals(fieldName)) {
+                    List name = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSearchHighlights.name = name;
+                } else if ("description".equals(fieldName)) {
+                    List description = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSearchHighlights.description = description;
+                } else if ("entityType".equals(fieldName)) {
+                    List entityType = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSearchHighlights.entityType = entityType;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedSearchHighlights;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchResultValue.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchResultValue.java
index 648b5f19a00b..1bfb6adf12ca 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchResultValue.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchResultValue.java
@@ -6,31 +6,32 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The value item of the search result.
  */
 @Immutable
-public final class SearchResultValue {
+public final class SearchResultValue implements JsonSerializable {
     /*
      * The search score calculated by the search engine. The results are ordered by
      * search score by default.
      */
     @Generated
-    @JsonProperty(value = "@search.score")
     private Double searchScore;
 
     /*
      * A highlight list that consists of index fields id ,qualifiedName, name,
      * description, entityType. When the keyword appears in those fields, the value of
      * the field, attached with emphasis mark, is returned as an element of
-     * 
      * @search.highlights.
      */
     @Generated
-    @JsonProperty(value = "@search.highlights")
     private SearchHighlights searchHighlights;
 
     /*
@@ -38,105 +39,90 @@ public final class SearchResultValue {
      * distinguish whether a record is an asset or a term.
      */
     @Generated
-    @JsonProperty(value = "objectType")
     private String objectType;
 
     /*
      * The create time of the record. The Unix epoch format.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The last update time of the record. The Unix epoch format.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The GUID of the record.
      */
     @Generated
-    @JsonProperty(value = "id")
     private String id;
 
     /*
      * The name of the record.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The qualified name of the record.
      */
     @Generated
-    @JsonProperty(value = "qualifiedName")
     private String qualifiedName;
 
     /*
      * The type name of the asset.
      */
     @Generated
-    @JsonProperty(value = "entityType")
     private String entityType;
 
     /*
      * The description of the asset.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The endorsement of the asset.
      */
     @Generated
-    @JsonProperty(value = "endorsement")
     private String endorsement;
 
     /*
      * The owner of the record.
      */
     @Generated
-    @JsonProperty(value = "owner")
     private String owner;
 
     /*
      * The classifications of the record.
      */
     @Generated
-    @JsonProperty(value = "classification")
     private List classification;
 
     /*
      * The labels of the asset.
      */
     @Generated
-    @JsonProperty(value = "label")
     private List label;
 
     /*
      * The terms assigned to the asset.
      */
     @Generated
-    @JsonProperty(value = "term")
     private List term;
 
     /*
      * The contacts of the asset.
      */
     @Generated
-    @JsonProperty(value = "contact")
     private List contact;
 
     /*
      * The asset types of the asset.
      */
     @Generated
-    @JsonProperty(value = "assetType")
     private List assetType;
 
     /*
@@ -144,35 +130,30 @@ public final class SearchResultValue {
      * AtlasGlossaryCategory.
      */
     @Generated
-    @JsonProperty(value = "glossaryType")
     private String glossaryType;
 
     /*
      * The glossary name of the term.
      */
     @Generated
-    @JsonProperty(value = "glossary")
     private String glossary;
 
     /*
      * The status of the term.
      */
     @Generated
-    @JsonProperty(value = "termStatus")
     private String termStatus;
 
     /*
      * The term template names used by the term.
      */
     @Generated
-    @JsonProperty(value = "termTemplate")
     private List termTemplate;
 
     /*
      * The definition of the term.
      */
     @Generated
-    @JsonProperty(value = "longDescription")
     private String longDescription;
 
     /**
@@ -407,4 +388,113 @@ public List getTermTemplate() {
     public String getLongDescription() {
         return this.longDescription;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("@search.score", this.searchScore);
+        jsonWriter.writeJsonField("@search.highlights", this.searchHighlights);
+        jsonWriter.writeStringField("objectType", this.objectType);
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("qualifiedName", this.qualifiedName);
+        jsonWriter.writeStringField("entityType", this.entityType);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("endorsement", this.endorsement);
+        jsonWriter.writeStringField("owner", this.owner);
+        jsonWriter.writeArrayField("classification", this.classification,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("label", this.label, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("term", this.term, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("contact", this.contact, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("assetType", this.assetType, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("glossaryType", this.glossaryType);
+        jsonWriter.writeStringField("glossary", this.glossary);
+        jsonWriter.writeStringField("termStatus", this.termStatus);
+        jsonWriter.writeArrayField("termTemplate", this.termTemplate, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("longDescription", this.longDescription);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SearchResultValue from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SearchResultValue if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SearchResultValue.
+     */
+    @Generated
+    public static SearchResultValue fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SearchResultValue deserializedSearchResultValue = new SearchResultValue();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("@search.score".equals(fieldName)) {
+                    deserializedSearchResultValue.searchScore = reader.getNullable(JsonReader::getDouble);
+                } else if ("@search.highlights".equals(fieldName)) {
+                    deserializedSearchResultValue.searchHighlights = SearchHighlights.fromJson(reader);
+                } else if ("objectType".equals(fieldName)) {
+                    deserializedSearchResultValue.objectType = reader.getString();
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedSearchResultValue.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedSearchResultValue.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("id".equals(fieldName)) {
+                    deserializedSearchResultValue.id = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedSearchResultValue.name = reader.getString();
+                } else if ("qualifiedName".equals(fieldName)) {
+                    deserializedSearchResultValue.qualifiedName = reader.getString();
+                } else if ("entityType".equals(fieldName)) {
+                    deserializedSearchResultValue.entityType = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    deserializedSearchResultValue.description = reader.getString();
+                } else if ("endorsement".equals(fieldName)) {
+                    deserializedSearchResultValue.endorsement = reader.getString();
+                } else if ("owner".equals(fieldName)) {
+                    deserializedSearchResultValue.owner = reader.getString();
+                } else if ("classification".equals(fieldName)) {
+                    List classification = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSearchResultValue.classification = classification;
+                } else if ("label".equals(fieldName)) {
+                    List label = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSearchResultValue.label = label;
+                } else if ("term".equals(fieldName)) {
+                    List term
+                        = reader.readArray(reader1 -> TermSearchResultValue.fromJson(reader1));
+                    deserializedSearchResultValue.term = term;
+                } else if ("contact".equals(fieldName)) {
+                    List contact
+                        = reader.readArray(reader1 -> ContactSearchResultValue.fromJson(reader1));
+                    deserializedSearchResultValue.contact = contact;
+                } else if ("assetType".equals(fieldName)) {
+                    List assetType = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSearchResultValue.assetType = assetType;
+                } else if ("glossaryType".equals(fieldName)) {
+                    deserializedSearchResultValue.glossaryType = reader.getString();
+                } else if ("glossary".equals(fieldName)) {
+                    deserializedSearchResultValue.glossary = reader.getString();
+                } else if ("termStatus".equals(fieldName)) {
+                    deserializedSearchResultValue.termStatus = reader.getString();
+                } else if ("termTemplate".equals(fieldName)) {
+                    List termTemplate = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSearchResultValue.termTemplate = termTemplate;
+                } else if ("longDescription".equals(fieldName)) {
+                    deserializedSearchResultValue.longDescription = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedSearchResultValue;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchSortOrder.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchSortOrder.java
index 573b991475c3..ddb8e738a525 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchSortOrder.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchSortOrder.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public SearchSortOrder() {
      * @return the corresponding SearchSortOrder.
      */
     @Generated
-    @JsonCreator
     public static SearchSortOrder fromString(String name) {
         return fromString(name, SearchSortOrder.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchTaxonomySetting.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchTaxonomySetting.java
index f5c95dd944f4..d60b030d38dd 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchTaxonomySetting.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SearchTaxonomySetting.java
@@ -6,26 +6,28 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * Taxonomy setting for search request.
  */
 @Fluent
-public final class SearchTaxonomySetting {
+public final class SearchTaxonomySetting implements JsonSerializable {
     /*
      * Asset types
      */
     @Generated
-    @JsonProperty(value = "assetTypes")
     private List assetTypes;
 
     /*
      * The content of a search facet result item.
      */
     @Generated
-    @JsonProperty(value = "facet")
     private SearchFacetItem facet;
 
     /**
@@ -78,4 +80,45 @@ public SearchTaxonomySetting setFacet(SearchFacetItem facet) {
         this.facet = facet;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("assetTypes", this.assetTypes, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeJsonField("facet", this.facet);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SearchTaxonomySetting from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SearchTaxonomySetting if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SearchTaxonomySetting.
+     */
+    @Generated
+    public static SearchTaxonomySetting fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SearchTaxonomySetting deserializedSearchTaxonomySetting = new SearchTaxonomySetting();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("assetTypes".equals(fieldName)) {
+                    List assetTypes = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSearchTaxonomySetting.assetTypes = assetTypes;
+                } else if ("facet".equals(fieldName)) {
+                    deserializedSearchTaxonomySetting.facet = SearchFacetItem.fromJson(reader);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedSearchTaxonomySetting;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SortType.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SortType.java
index 837a2a5d2eab..eacf8a04dda8 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SortType.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SortType.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -48,7 +47,6 @@ public SortType() {
      * @return the corresponding SortType.
      */
     @Generated
-    @JsonCreator
     public static SortType fromString(String name) {
         return fromString(name, SortType.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/StatusAtlasRelationship.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/StatusAtlasRelationship.java
index f622e0847f1f..4d8d5248ad48 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/StatusAtlasRelationship.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/StatusAtlasRelationship.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -42,7 +41,6 @@ public StatusAtlasRelationship() {
      * @return the corresponding StatusAtlasRelationship.
      */
     @Generated
-    @JsonCreator
     public static StatusAtlasRelationship fromString(String name) {
         return fromString(name, StatusAtlasRelationship.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SuggestOptions.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SuggestOptions.java
index 1cd15cd59c25..3eec27c0a9f4 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SuggestOptions.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SuggestOptions.java
@@ -6,13 +6,17 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The payload of suggest request.
  */
 @Fluent
-public final class SuggestOptions {
+public final class SuggestOptions implements JsonSerializable {
     /*
      * The keywords applied to all fields that support suggest operation. It must be
      * at least 1 character, and no more than 100 characters. In the index schema we
@@ -20,7 +24,6 @@ public final class SuggestOptions {
      * a search mode.
      */
     @Generated
-    @JsonProperty(value = "keywords")
     private String keywords;
 
     /*
@@ -28,14 +31,12 @@ public final class SuggestOptions {
      * must be a number between 1 and 100.
      */
     @Generated
-    @JsonProperty(value = "limit")
     private Integer limit;
 
     /*
      * The filter for the search.
      */
     @Generated
-    @JsonProperty(value = "filter")
     private Object filter;
 
     /**
@@ -118,4 +119,47 @@ public SuggestOptions setFilter(Object filter) {
         this.filter = filter;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("keywords", this.keywords);
+        jsonWriter.writeNumberField("limit", this.limit);
+        jsonWriter.writeUntypedField("filter", this.filter);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SuggestOptions from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SuggestOptions if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SuggestOptions.
+     */
+    @Generated
+    public static SuggestOptions fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SuggestOptions deserializedSuggestOptions = new SuggestOptions();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("keywords".equals(fieldName)) {
+                    deserializedSuggestOptions.keywords = reader.getString();
+                } else if ("limit".equals(fieldName)) {
+                    deserializedSuggestOptions.limit = reader.getNullable(JsonReader::getInt);
+                } else if ("filter".equals(fieldName)) {
+                    deserializedSuggestOptions.filter = reader.readUntyped();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedSuggestOptions;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SuggestResult.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SuggestResult.java
index 44ed4f230eb9..e93108c38500 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SuggestResult.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SuggestResult.java
@@ -6,19 +6,22 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The result item of the search suggest.
  */
 @Immutable
-public final class SuggestResult {
+public final class SuggestResult implements JsonSerializable {
     /*
      * The result value
      */
     @Generated
-    @JsonProperty(value = "value")
     private List value;
 
     /**
@@ -37,4 +40,42 @@ private SuggestResult() {
     public List getValue() {
         return this.value;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SuggestResult from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SuggestResult if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SuggestResult.
+     */
+    @Generated
+    public static SuggestResult fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SuggestResult deserializedSuggestResult = new SuggestResult();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("value".equals(fieldName)) {
+                    List value = reader.readArray(reader1 -> SuggestResultValue.fromJson(reader1));
+                    deserializedSuggestResult.value = value;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedSuggestResult;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SuggestResultValue.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SuggestResultValue.java
index 45b4f1f21527..cb5d1be47196 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SuggestResultValue.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/SuggestResultValue.java
@@ -6,20 +6,23 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The value item of the search suggest.
  */
 @Immutable
-public final class SuggestResultValue {
+public final class SuggestResultValue implements JsonSerializable {
     /*
      * The search score calculated by the search engine. The results are ordered by
      * search score by default.
      */
     @Generated
-    @JsonProperty(value = "@search.score")
     private Double searchScore;
 
     /*
@@ -27,7 +30,6 @@ public final class SuggestResultValue {
      * with emphasis mark.
      */
     @Generated
-    @JsonProperty(value = "@search.text")
     private String searchText;
 
     /*
@@ -35,105 +37,90 @@ public final class SuggestResultValue {
      * distinguish whether a record is an asset or a term.
      */
     @Generated
-    @JsonProperty(value = "objectType")
     private String objectType;
 
     /*
      * The create time of the record. The Unix epoch format.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The last update time of the record. The Unix epoch format.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The GUID of the record.
      */
     @Generated
-    @JsonProperty(value = "id")
     private String id;
 
     /*
      * The name of the record.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The qualified name of the record.
      */
     @Generated
-    @JsonProperty(value = "qualifiedName")
     private String qualifiedName;
 
     /*
      * The type name of the asset.
      */
     @Generated
-    @JsonProperty(value = "entityType")
     private String entityType;
 
     /*
      * The description of the asset.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The endorsement of the asset.
      */
     @Generated
-    @JsonProperty(value = "endorsement")
     private String endorsement;
 
     /*
      * The owner of the record.
      */
     @Generated
-    @JsonProperty(value = "owner")
     private String owner;
 
     /*
      * The classifications of the record.
      */
     @Generated
-    @JsonProperty(value = "classification")
     private List classification;
 
     /*
      * The labels of the asset.
      */
     @Generated
-    @JsonProperty(value = "label")
     private List label;
 
     /*
      * The terms assigned to the asset.
      */
     @Generated
-    @JsonProperty(value = "term")
     private List term;
 
     /*
      * The contacts of the asset.
      */
     @Generated
-    @JsonProperty(value = "contact")
     private List contact;
 
     /*
      * The asset types of the asset.
      */
     @Generated
-    @JsonProperty(value = "assetType")
     private List assetType;
 
     /*
@@ -141,35 +128,30 @@ public final class SuggestResultValue {
      * AtlasGlossaryCategory.
      */
     @Generated
-    @JsonProperty(value = "glossaryType")
     private String glossaryType;
 
     /*
      * The glossary name of the term.
      */
     @Generated
-    @JsonProperty(value = "glossary")
     private String glossary;
 
     /*
      * The status of the term.
      */
     @Generated
-    @JsonProperty(value = "termStatus")
     private String termStatus;
 
     /*
      * The term template names used by the term.
      */
     @Generated
-    @JsonProperty(value = "termTemplate")
     private List termTemplate;
 
     /*
      * The definition of the term.
      */
     @Generated
-    @JsonProperty(value = "longDescription")
     private String longDescription;
 
     /**
@@ -402,4 +384,113 @@ public List getTermTemplate() {
     public String getLongDescription() {
         return this.longDescription;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("@search.score", this.searchScore);
+        jsonWriter.writeStringField("@search.text", this.searchText);
+        jsonWriter.writeStringField("objectType", this.objectType);
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("qualifiedName", this.qualifiedName);
+        jsonWriter.writeStringField("entityType", this.entityType);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("endorsement", this.endorsement);
+        jsonWriter.writeStringField("owner", this.owner);
+        jsonWriter.writeArrayField("classification", this.classification,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("label", this.label, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("term", this.term, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("contact", this.contact, (writer, element) -> writer.writeJson(element));
+        jsonWriter.writeArrayField("assetType", this.assetType, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("glossaryType", this.glossaryType);
+        jsonWriter.writeStringField("glossary", this.glossary);
+        jsonWriter.writeStringField("termStatus", this.termStatus);
+        jsonWriter.writeArrayField("termTemplate", this.termTemplate, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("longDescription", this.longDescription);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of SuggestResultValue from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of SuggestResultValue if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the SuggestResultValue.
+     */
+    @Generated
+    public static SuggestResultValue fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            SuggestResultValue deserializedSuggestResultValue = new SuggestResultValue();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("@search.score".equals(fieldName)) {
+                    deserializedSuggestResultValue.searchScore = reader.getNullable(JsonReader::getDouble);
+                } else if ("@search.text".equals(fieldName)) {
+                    deserializedSuggestResultValue.searchText = reader.getString();
+                } else if ("objectType".equals(fieldName)) {
+                    deserializedSuggestResultValue.objectType = reader.getString();
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedSuggestResultValue.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedSuggestResultValue.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("id".equals(fieldName)) {
+                    deserializedSuggestResultValue.id = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedSuggestResultValue.name = reader.getString();
+                } else if ("qualifiedName".equals(fieldName)) {
+                    deserializedSuggestResultValue.qualifiedName = reader.getString();
+                } else if ("entityType".equals(fieldName)) {
+                    deserializedSuggestResultValue.entityType = reader.getString();
+                } else if ("description".equals(fieldName)) {
+                    deserializedSuggestResultValue.description = reader.getString();
+                } else if ("endorsement".equals(fieldName)) {
+                    deserializedSuggestResultValue.endorsement = reader.getString();
+                } else if ("owner".equals(fieldName)) {
+                    deserializedSuggestResultValue.owner = reader.getString();
+                } else if ("classification".equals(fieldName)) {
+                    List classification = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSuggestResultValue.classification = classification;
+                } else if ("label".equals(fieldName)) {
+                    List label = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSuggestResultValue.label = label;
+                } else if ("term".equals(fieldName)) {
+                    List term
+                        = reader.readArray(reader1 -> TermSearchResultValue.fromJson(reader1));
+                    deserializedSuggestResultValue.term = term;
+                } else if ("contact".equals(fieldName)) {
+                    List contact
+                        = reader.readArray(reader1 -> ContactSearchResultValue.fromJson(reader1));
+                    deserializedSuggestResultValue.contact = contact;
+                } else if ("assetType".equals(fieldName)) {
+                    List assetType = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSuggestResultValue.assetType = assetType;
+                } else if ("glossaryType".equals(fieldName)) {
+                    deserializedSuggestResultValue.glossaryType = reader.getString();
+                } else if ("glossary".equals(fieldName)) {
+                    deserializedSuggestResultValue.glossary = reader.getString();
+                } else if ("termStatus".equals(fieldName)) {
+                    deserializedSuggestResultValue.termStatus = reader.getString();
+                } else if ("termTemplate".equals(fieldName)) {
+                    List termTemplate = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSuggestResultValue.termTemplate = termTemplate;
+                } else if ("longDescription".equals(fieldName)) {
+                    deserializedSuggestResultValue.longDescription = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedSuggestResultValue;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TermSearchResultValue.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TermSearchResultValue.java
index 87675f2980b7..222b65f8c60f 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TermSearchResultValue.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TermSearchResultValue.java
@@ -6,32 +6,33 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.Immutable;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * The context.
  */
 @Immutable
-public final class TermSearchResultValue {
+public final class TermSearchResultValue implements JsonSerializable {
     /*
      * The name of the term.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The name of the glossary which contains the term.
      */
     @Generated
-    @JsonProperty(value = "glossaryName")
     private String glossaryName;
 
     /*
      * The GUID of the term.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /**
@@ -70,4 +71,47 @@ public String getGlossaryName() {
     public String getGuid() {
         return this.guid;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeStringField("glossaryName", this.glossaryName);
+        jsonWriter.writeStringField("guid", this.guid);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of TermSearchResultValue from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of TermSearchResultValue if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the TermSearchResultValue.
+     */
+    @Generated
+    public static TermSearchResultValue fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            TermSearchResultValue deserializedTermSearchResultValue = new TermSearchResultValue();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("name".equals(fieldName)) {
+                    deserializedTermSearchResultValue.name = reader.getString();
+                } else if ("glossaryName".equals(fieldName)) {
+                    deserializedTermSearchResultValue.glossaryName = reader.getString();
+                } else if ("guid".equals(fieldName)) {
+                    deserializedTermSearchResultValue.guid = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedTermSearchResultValue;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TermStatus.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TermStatus.java
index 68d29b7d247f..047187bd4083 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TermStatus.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TermStatus.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -54,7 +53,6 @@ public TermStatus() {
      * @return the corresponding TermStatus.
      */
     @Generated
-    @JsonCreator
     public static TermStatus fromString(String name) {
         return fromString(name, TermStatus.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TermTemplateDef.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TermTemplateDef.java
index 426f0574942c..e61f0577680a 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TermTemplateDef.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TermTemplateDef.java
@@ -6,7 +6,11 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -14,110 +18,95 @@
  * Term template definition for glossary term.
  */
 @Fluent
-public final class TermTemplateDef {
+public final class TermTemplateDef implements JsonSerializable {
     /*
      * The enum of type category.
      */
     @Generated
-    @JsonProperty(value = "category")
     private TypeCategory category;
 
     /*
      * The created time of the record.
      */
     @Generated
-    @JsonProperty(value = "createTime")
     private Long createTime;
 
     /*
      * The user who created the record.
      */
     @Generated
-    @JsonProperty(value = "createdBy")
     private String createdBy;
 
     /*
      * The date format.
      */
     @Generated
-    @JsonProperty(value = "dateFormatter")
     private DateFormat dateFormatter;
 
     /*
      * The description of the type definition.
      */
     @Generated
-    @JsonProperty(value = "description")
     private String description;
 
     /*
      * The GUID of the type definition.
      */
     @Generated
-    @JsonProperty(value = "guid")
     private String guid;
 
     /*
      * The name of the type definition.
      */
     @Generated
-    @JsonProperty(value = "name")
     private String name;
 
     /*
      * The options for the type definition.
      */
     @Generated
-    @JsonProperty(value = "options")
     private Map options;
 
     /*
      * The service type.
      */
     @Generated
-    @JsonProperty(value = "serviceType")
     private String serviceType;
 
     /*
      * The version of the type.
      */
     @Generated
-    @JsonProperty(value = "typeVersion")
     private String typeVersion;
 
     /*
      * The update time of the record.
      */
     @Generated
-    @JsonProperty(value = "updateTime")
     private Long updateTime;
 
     /*
      * The user who updated the record.
      */
     @Generated
-    @JsonProperty(value = "updatedBy")
     private String updatedBy;
 
     /*
      * The version of the record.
      */
     @Generated
-    @JsonProperty(value = "version")
     private Long version;
 
     /*
      * ETag for concurrency control.
      */
     @Generated
-    @JsonProperty(value = "lastModifiedTS")
     private String lastModifiedTS;
 
     /*
      * An array of attribute definitions.
      */
     @Generated
-    @JsonProperty(value = "attributeDefs")
     private List attributeDefs;
 
     /**
@@ -456,4 +445,86 @@ public TermTemplateDef setAttributeDefs(List attributeDefs) {
         this.attributeDefs = attributeDefs;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("category", this.category == null ? null : this.category.toString());
+        jsonWriter.writeNumberField("createTime", this.createTime);
+        jsonWriter.writeStringField("createdBy", this.createdBy);
+        jsonWriter.writeJsonField("dateFormatter", this.dateFormatter);
+        jsonWriter.writeStringField("description", this.description);
+        jsonWriter.writeStringField("guid", this.guid);
+        jsonWriter.writeStringField("name", this.name);
+        jsonWriter.writeMapField("options", this.options, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeStringField("serviceType", this.serviceType);
+        jsonWriter.writeStringField("typeVersion", this.typeVersion);
+        jsonWriter.writeNumberField("updateTime", this.updateTime);
+        jsonWriter.writeStringField("updatedBy", this.updatedBy);
+        jsonWriter.writeNumberField("version", this.version);
+        jsonWriter.writeStringField("lastModifiedTS", this.lastModifiedTS);
+        jsonWriter.writeArrayField("attributeDefs", this.attributeDefs, (writer, element) -> writer.writeJson(element));
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of TermTemplateDef from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of TermTemplateDef if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the TermTemplateDef.
+     */
+    @Generated
+    public static TermTemplateDef fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            TermTemplateDef deserializedTermTemplateDef = new TermTemplateDef();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("category".equals(fieldName)) {
+                    deserializedTermTemplateDef.category = TypeCategory.fromString(reader.getString());
+                } else if ("createTime".equals(fieldName)) {
+                    deserializedTermTemplateDef.createTime = reader.getNullable(JsonReader::getLong);
+                } else if ("createdBy".equals(fieldName)) {
+                    deserializedTermTemplateDef.createdBy = reader.getString();
+                } else if ("dateFormatter".equals(fieldName)) {
+                    deserializedTermTemplateDef.dateFormatter = DateFormat.fromJson(reader);
+                } else if ("description".equals(fieldName)) {
+                    deserializedTermTemplateDef.description = reader.getString();
+                } else if ("guid".equals(fieldName)) {
+                    deserializedTermTemplateDef.guid = reader.getString();
+                } else if ("name".equals(fieldName)) {
+                    deserializedTermTemplateDef.name = reader.getString();
+                } else if ("options".equals(fieldName)) {
+                    Map options = reader.readMap(reader1 -> reader1.getString());
+                    deserializedTermTemplateDef.options = options;
+                } else if ("serviceType".equals(fieldName)) {
+                    deserializedTermTemplateDef.serviceType = reader.getString();
+                } else if ("typeVersion".equals(fieldName)) {
+                    deserializedTermTemplateDef.typeVersion = reader.getString();
+                } else if ("updateTime".equals(fieldName)) {
+                    deserializedTermTemplateDef.updateTime = reader.getNullable(JsonReader::getLong);
+                } else if ("updatedBy".equals(fieldName)) {
+                    deserializedTermTemplateDef.updatedBy = reader.getString();
+                } else if ("version".equals(fieldName)) {
+                    deserializedTermTemplateDef.version = reader.getNullable(JsonReader::getLong);
+                } else if ("lastModifiedTS".equals(fieldName)) {
+                    deserializedTermTemplateDef.lastModifiedTS = reader.getString();
+                } else if ("attributeDefs".equals(fieldName)) {
+                    List attributeDefs
+                        = reader.readArray(reader1 -> AtlasAttributeDef.fromJson(reader1));
+                    deserializedTermTemplateDef.attributeDefs = attributeDefs;
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedTermTemplateDef;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TimeBoundary.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TimeBoundary.java
index c2d8d9f5c787..ca806a661350 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TimeBoundary.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TimeBoundary.java
@@ -6,32 +6,33 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 
 /**
  * Captures time-boundary details.
  */
 @Fluent
-public final class TimeBoundary {
+public final class TimeBoundary implements JsonSerializable {
     /*
      * The end of the time boundary.
      */
     @Generated
-    @JsonProperty(value = "endTime")
     private String endTime;
 
     /*
      * The start of the time boundary.
      */
     @Generated
-    @JsonProperty(value = "startTime")
     private String startTime;
 
     /*
      * The timezone of the time boundary.
      */
     @Generated
-    @JsonProperty(value = "timeZone")
     private String timeZone;
 
     /**
@@ -106,4 +107,47 @@ public TimeBoundary setTimeZone(String timeZone) {
         this.timeZone = timeZone;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeStringField("endTime", this.endTime);
+        jsonWriter.writeStringField("startTime", this.startTime);
+        jsonWriter.writeStringField("timeZone", this.timeZone);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of TimeBoundary from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of TimeBoundary if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the TimeBoundary.
+     */
+    @Generated
+    public static TimeBoundary fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            TimeBoundary deserializedTimeBoundary = new TimeBoundary();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("endTime".equals(fieldName)) {
+                    deserializedTimeBoundary.endTime = reader.getString();
+                } else if ("startTime".equals(fieldName)) {
+                    deserializedTimeBoundary.startTime = reader.getString();
+                } else if ("timeZone".equals(fieldName)) {
+                    deserializedTimeBoundary.timeZone = reader.getString();
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedTimeBoundary;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TimeZone.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TimeZone.java
index 92de8ea4c710..8e3263e6a838 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TimeZone.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TimeZone.java
@@ -6,54 +6,52 @@
 
 import com.azure.core.annotation.Fluent;
 import com.azure.core.annotation.Generated;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
 import java.util.List;
 
 /**
  * The timezone information.
  */
 @Fluent
-public final class TimeZone {
+public final class TimeZone implements JsonSerializable {
     /*
      * The value of the daylight saving time.
      */
     @Generated
-    @JsonProperty(value = "dstSavings")
     private Integer dstSavings;
 
     /*
      * The ID of the timezone.
      */
     @Generated
-    @JsonProperty(value = "id")
     private String id;
 
     /*
      * An array of available IDs.
      */
     @Generated
-    @JsonProperty(value = "availableIds")
     private List availableIds;
 
     /*
      * The timezone information.
      */
     @Generated
-    @JsonProperty(value = "default")
     private TimeZone defaultProperty;
 
     /*
      * The display name of the timezone.
      */
     @Generated
-    @JsonProperty(value = "displayName")
     private String displayName;
 
     /*
      * The raw offset of the timezone.
      */
     @Generated
-    @JsonProperty(value = "rawOffset")
     private Integer rawOffset;
 
     /**
@@ -194,4 +192,57 @@ public TimeZone setRawOffset(Integer rawOffset) {
         this.rawOffset = rawOffset;
         return this;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Generated
+    @Override
+    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+        jsonWriter.writeStartObject();
+        jsonWriter.writeNumberField("dstSavings", this.dstSavings);
+        jsonWriter.writeStringField("id", this.id);
+        jsonWriter.writeArrayField("availableIds", this.availableIds, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeJsonField("default", this.defaultProperty);
+        jsonWriter.writeStringField("displayName", this.displayName);
+        jsonWriter.writeNumberField("rawOffset", this.rawOffset);
+        return jsonWriter.writeEndObject();
+    }
+
+    /**
+     * Reads an instance of TimeZone from the JsonReader.
+     * 
+     * @param jsonReader The JsonReader being read.
+     * @return An instance of TimeZone if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null.
+     * @throws IOException If an error occurs while reading the TimeZone.
+     */
+    @Generated
+    public static TimeZone fromJson(JsonReader jsonReader) throws IOException {
+        return jsonReader.readObject(reader -> {
+            TimeZone deserializedTimeZone = new TimeZone();
+            while (reader.nextToken() != JsonToken.END_OBJECT) {
+                String fieldName = reader.getFieldName();
+                reader.nextToken();
+
+                if ("dstSavings".equals(fieldName)) {
+                    deserializedTimeZone.dstSavings = reader.getNullable(JsonReader::getInt);
+                } else if ("id".equals(fieldName)) {
+                    deserializedTimeZone.id = reader.getString();
+                } else if ("availableIds".equals(fieldName)) {
+                    List availableIds = reader.readArray(reader1 -> reader1.getString());
+                    deserializedTimeZone.availableIds = availableIds;
+                } else if ("default".equals(fieldName)) {
+                    deserializedTimeZone.defaultProperty = TimeZone.fromJson(reader);
+                } else if ("displayName".equals(fieldName)) {
+                    deserializedTimeZone.displayName = reader.getString();
+                } else if ("rawOffset".equals(fieldName)) {
+                    deserializedTimeZone.rawOffset = reader.getNullable(JsonReader::getInt);
+                } else {
+                    reader.skipChildren();
+                }
+            }
+
+            return deserializedTimeZone;
+        });
+    }
 }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TypeCategory.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TypeCategory.java
index d1e9080ebc23..57be21099b0a 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TypeCategory.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/com/azure/analytics/purview/datamap/models/TypeCategory.java
@@ -6,7 +6,6 @@
 
 import com.azure.core.annotation.Generated;
 import com.azure.core.util.ExpandableStringEnum;
-import com.fasterxml.jackson.annotation.JsonCreator;
 import java.util.Collection;
 
 /**
@@ -90,7 +89,6 @@ public TypeCategory() {
      * @return the corresponding TypeCategory.
      */
     @Generated
-    @JsonCreator
     public static TypeCategory fromString(String name) {
         return fromString(name, TypeCategory.class);
     }
diff --git a/sdk/purview/azure-analytics-purview-datamap/src/main/java/module-info.java b/sdk/purview/azure-analytics-purview-datamap/src/main/java/module-info.java
index 502b0da6e9dc..1823805e11f7 100644
--- a/sdk/purview/azure-analytics-purview-datamap/src/main/java/module-info.java
+++ b/sdk/purview/azure-analytics-purview-datamap/src/main/java/module-info.java
@@ -4,7 +4,8 @@
 
 module com.azure.analytics.purview.datamap {
     requires transitive com.azure.core;
+    requires transitive com.azure.json;
     exports com.azure.analytics.purview.datamap;
     exports com.azure.analytics.purview.datamap.models;
-    opens com.azure.analytics.purview.datamap.models to com.azure.core, com.fasterxml.jackson.databind;
+    opens com.azure.analytics.purview.datamap.models to com.azure.core;
 }