Repository: Azure/azure-sdk-for-rust
Pull request #2547: Update to @azure-tools/typespec-rust@0.14.0
Author: login: heaths
Labels: name: Storage
description: Storage Service (Queues, Blobs, Files)
Created: 2025-05-01T22:42:20Z | Merged: 2025-05-02T02:00:25Z



Diff:
diff --git a/eng/emitter-package-lock.json b/eng/emitter-package-lock.json
index 2bd3b85e053..4982498aba5 100644
--- a/eng/emitter-package-lock.json
+++ b/eng/emitter-package-lock.json
@@ -5,18 +5,18 @@
   "packages": {
     "": {
       "dependencies": {
-        "@azure-tools/typespec-rust": "0.13.3"
+        "@azure-tools/typespec-rust": "0.14.0"
       },
       "devDependencies": {
-        "@azure-tools/typespec-azure-core": "0.54.0",
-        "@azure-tools/typespec-azure-rulesets": "0.54.0",
-        "@azure-tools/typespec-client-generator-core": "0.54.0",
-        "@typespec/compiler": "1.0.0-rc.0",
-        "@typespec/http": "1.0.0-rc.0",
-        "@typespec/openapi": "1.0.0-rc.0",
-        "@typespec/rest": "0.68.0",
-        "@typespec/versioning": "0.68.0",
-        "@typespec/xml": "0.68.0"
+        "@azure-tools/typespec-azure-core": "0.55.0",
+        "@azure-tools/typespec-azure-rulesets": "0.55.0",
+        "@azure-tools/typespec-client-generator-core": "0.55.1",
+        "@typespec/compiler": "1.0.0-rc.1",
+        "@typespec/http": "1.0.0-rc.1",
+        "@typespec/openapi": "1.0.0-rc.1",
+        "@typespec/rest": "0.69.0",
+        "@typespec/versioning": "0.69.0",
+        "@typespec/xml": "0.69.0"
       }
     },
     "node_modules/@azure-tools/async-io": {
@@ -65,23 +65,23 @@
       }
     },
     "node_modules/@azure-tools/typespec-azure-core": {
-      "version": "0.54.0",
-      "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.54.0.tgz",
-      "integrity": "sha512-rlUK9j/1mHUHaNPzOibz1aeeUnROOrNlTPDmnHOfbo4WP0NwV4tDU3rnoUCZxwabVQGKb9U7VTsunb74AzAafg==",
+      "version": "0.55.0",
+      "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.55.0.tgz",
+      "integrity": "sha512-gDHTm9UYDIbSoBOVsi4Sf+Ly40gnEpIWzqe3KS1H75YB1XXF8ciSnFen3G2bw8EQIj5pcbvP6ZEv18Sy4SJEDg==",
       "license": "MIT",
       "engines": {
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@typespec/compiler": "^1.0.0-rc.0",
-        "@typespec/http": "^1.0.0-rc.0",
-        "@typespec/rest": "^0.68.0"
+        "@typespec/compiler": "^1.0.0-rc.1",
+        "@typespec/http": "^1.0.0-rc.1",
+        "@typespec/rest": "^0.69.0"
       }
     },
     "node_modules/@azure-tools/typespec-azure-resource-manager": {
-      "version": "0.54.0",
-      "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.54.0.tgz",
-      "integrity": "sha512-SKBMvBy3wD44ZIHjOmQcvYgWYnk4WcDOhXn1kLSgiYiX74zpv48G9sl8ic1AneREq5UtGNwZ4rdMFWY7BW+8hg==",
+      "version": "0.55.0",
+      "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.55.0.tgz",
+      "integrity": "sha512-7ff1q3ddamt7DYl00YdrFC3qMLNfI2ihH22nQr96BbOpxl4Pa7pvJFcv4cdi6PExjakKfuCXAKr/x0ukxnxCpQ==",
       "dev": true,
       "license": "MIT",
       "peer": true,
@@ -93,34 +93,34 @@
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@azure-tools/typespec-azure-core": "^0.54.0",
-        "@typespec/compiler": "^1.0.0-rc.0",
-        "@typespec/http": "^1.0.0-rc.0",
-        "@typespec/openapi": "^1.0.0-rc.0",
-        "@typespec/rest": "^0.68.0",
-        "@typespec/versioning": "^0.68.0"
+        "@azure-tools/typespec-azure-core": "^0.55.0",
+        "@typespec/compiler": "^1.0.0-rc.1",
+        "@typespec/http": "^1.0.0-rc.1",
+        "@typespec/openapi": "^1.0.0-rc.1",
+        "@typespec/rest": "^0.69.0",
+        "@typespec/versioning": "^0.69.0"
       }
     },
     "node_modules/@azure-tools/typespec-azure-rulesets": {
-      "version": "0.54.0",
-      "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.54.0.tgz",
-      "integrity": "sha512-Pupm5D76JEV4SMesXEEpei7JcErJSt0agVMXH9KjFXRfUYX+coBwfkP+mu3ViZQ+DRgC21qyHk8SxT2ffxxK2Q==",
+      "version": "0.55.0",
+      "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.55.0.tgz",
+      "integrity": "sha512-RquIvTz2dEkew6Wfj6mYld79k5co/NWrQGR3qdAwcLtp8RVOzDFk6QwKPn9f71UnQkzwuV8Z3bOtXmR/c8MDrg==",
       "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@azure-tools/typespec-azure-core": "^0.54.0",
-        "@azure-tools/typespec-azure-resource-manager": "^0.54.0",
-        "@azure-tools/typespec-client-generator-core": "^0.54.0",
-        "@typespec/compiler": "^1.0.0-rc.0"
+        "@azure-tools/typespec-azure-core": "^0.55.0",
+        "@azure-tools/typespec-azure-resource-manager": "^0.55.0",
+        "@azure-tools/typespec-client-generator-core": "^0.55.0",
+        "@typespec/compiler": "^1.0.0-rc.1"
       }
     },
     "node_modules/@azure-tools/typespec-client-generator-core": {
-      "version": "0.54.0",
-      "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.54.0.tgz",
-      "integrity": "sha512-qZR6FgB+wKfF5aRQtEwjUo6xgw1MomqyFwJf6WL+xstHDs7np3jBja43OCdJaooPzAknYWh2V+Hv77/fLFd9Aw==",
+      "version": "0.55.1",
+      "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.55.1.tgz",
+      "integrity": "sha512-VmjOHWk2bBoFFB2/pLsGR1LZudLff4kEUEhSJX8jQQ23Y5BiT8f2PknB6DUohTpYnWcKIVZDXle+ObjqspS1Pw==",
       "license": "MIT",
       "dependencies": {
         "change-case": "~5.4.4",
@@ -131,28 +131,27 @@
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@azure-tools/typespec-azure-core": "^0.54.0",
-        "@typespec/compiler": "^1.0.0-rc.0",
-        "@typespec/events": "^0.68.0",
-        "@typespec/http": "^1.0.0-rc.0",
-        "@typespec/openapi": "^1.0.0-rc.0",
-        "@typespec/rest": "^0.68.0",
-        "@typespec/sse": "^0.68.0",
-        "@typespec/streams": "^0.68.0",
-        "@typespec/versioning": "^0.68.0",
-        "@typespec/xml": "^0.68.0"
+        "@azure-tools/typespec-azure-core": "^0.55.0",
+        "@typespec/compiler": "^1.0.0-rc.1",
+        "@typespec/events": "^0.69.0",
+        "@typespec/http": "^1.0.0-rc.1",
+        "@typespec/openapi": "^1.0.0-rc.1",
+        "@typespec/rest": "^0.69.0",
+        "@typespec/sse": "^0.69.0",
+        "@typespec/streams": "^0.69.0",
+        "@typespec/versioning": "^0.69.0",
+        "@typespec/xml": "^0.69.0"
       }
     },
     "node_modules/@azure-tools/typespec-rust": {
-      "version": "0.13.3",
-      "resolved": "https://registry.npmjs.org/@azure-tools/typespec-rust/-/typespec-rust-0.13.3.tgz",
-      "integrity": "sha512-iqQGur8E443wXuRp71BaJkAt1ZjJjGS1MHxRiIGMJxdCAHwW0Ja0XHjvse/KjeLNupg3Yj4LUpZm1rUzCgflBA==",
+      "version": "0.14.0",
+      "resolved": "https://registry.npmjs.org/@azure-tools/typespec-rust/-/typespec-rust-0.14.0.tgz",
+      "integrity": "sha512-2X11ZCTUKeDNiCJQ4vLOk10C/sZWlXFCVU36IciT9yAMNGPxtQumBpgWUpSkasA+qUDVwfDuRDV7cHNDlXcyCQ==",
       "license": "MIT",
       "dependencies": {
         "@azure-tools/codegen": "~2.10.0",
         "@azure-tools/linq": "~3.1.263",
         "@types/turndown": "^5.0.5",
-        "js-yaml": "^4.1.0",
         "linkifyjs": "^4.2.0",
         "query-string": "9.1.1",
         "source-map-support": "0.5.21",
@@ -162,9 +161,9 @@
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@azure-tools/typespec-client-generator-core": ">=0.54.0 <1.0.0",
-        "@typespec/compiler": ">=1.0.0-rc.0 <1.0.0",
-        "@typespec/http": ">=1.0.0-rc.0 <1.0.0"
+        "@azure-tools/typespec-client-generator-core": ">=0.55.1 <1.0.0",
+        "@typespec/compiler": ">=1.0.0-rc.1 <1.0.0",
+        "@typespec/http": ">=1.0.0-rc.1 <1.0.0"
       }
     },
     "node_modules/@babel/code-frame": {
@@ -182,23 +181,23 @@
       }
     },
     "node_modules/@babel/helper-validator-identifier": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
-      "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+      "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
       "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@inquirer/checkbox": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.4.tgz",
-      "integrity": "sha512-d30576EZdApjAMceijXA5jDzRQHT/MygbC+J8I7EqA6f/FRpYxlRtRJbHF8gHeWYeSdOuTEJqonn7QLB1ELezA==",
+      "version": "4.1.5",
+      "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.5.tgz",
+      "integrity": "sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ==",
       "license": "MIT",
       "dependencies": {
-        "@inquirer/core": "^10.1.9",
+        "@inquirer/core": "^10.1.10",
         "@inquirer/figures": "^1.0.11",
-        "@inquirer/type": "^3.0.5",
+        "@inquirer/type": "^3.0.6",
         "ansi-escapes": "^4.3.2",
         "yoctocolors-cjs": "^2.1.2"
       },
@@ -215,13 +214,13 @@
       }
     },
     "node_modules/@inquirer/confirm": {
-      "version": "5.1.8",
-      "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.8.tgz",
-      "integrity": "sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==",
+      "version": "5.1.9",
+      "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.9.tgz",
+      "integrity": "sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==",
       "license": "MIT",
       "dependencies": {
-        "@inquirer/core": "^10.1.9",
-        "@inquirer/type": "^3.0.5"
+        "@inquirer/core": "^10.1.10",
+        "@inquirer/type": "^3.0.6"
       },
       "engines": {
         "node": ">=18"
@@ -236,13 +235,13 @@
       }
     },
     "node_modules/@inquirer/core": {
-      "version": "10.1.9",
-      "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
-      "integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
+      "version": "10.1.10",
+      "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz",
+      "integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==",
       "license": "MIT",
       "dependencies": {
         "@inquirer/figures": "^1.0.11",
-        "@inquirer/type": "^3.0.5",
+        "@inquirer/type": "^3.0.6",
         "ansi-escapes": "^4.3.2",
         "cli-width": "^4.1.0",
         "mute-stream": "^2.0.0",
@@ -263,13 +262,13 @@
       }
     },
     "node_modules/@inquirer/editor": {
-      "version": "4.2.9",
-      "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.9.tgz",
-      "integrity": "sha512-8HjOppAxO7O4wV1ETUlJFg6NDjp/W2NP5FB9ZPAcinAlNT4ZIWOLe2pUVwmmPRSV0NMdI5r/+lflN55AwZOKSw==",
+      "version": "4.2.10",
+      "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.10.tgz",
+      "integrity": "sha512-5GVWJ+qeI6BzR6TIInLP9SXhWCEcvgFQYmcRG6d6RIlhFjM5TyG18paTGBgRYyEouvCmzeco47x9zX9tQEofkw==",
       "license": "MIT",
       "dependencies": {
-        "@inquirer/core": "^10.1.9",
-        "@inquirer/type": "^3.0.5",
+        "@inquirer/core": "^10.1.10",
+        "@inquirer/type": "^3.0.6",
         "external-editor": "^3.1.0"
       },
       "engines": {
@@ -285,13 +284,13 @@
       }
     },
     "node_modules/@inquirer/expand": {
-      "version": "4.0.11",
-      "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.11.tgz",
-      "integrity": "sha512-OZSUW4hFMW2TYvX/Sv+NnOZgO8CHT2TU1roUCUIF2T+wfw60XFRRp9MRUPCT06cRnKL+aemt2YmTWwt7rOrNEA==",
+      "version": "4.0.12",
+      "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.12.tgz",
+      "integrity": "sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw==",
       "license": "MIT",
       "dependencies": {
-        "@inquirer/core": "^10.1.9",
-        "@inquirer/type": "^3.0.5",
+        "@inquirer/core": "^10.1.10",
+        "@inquirer/type": "^3.0.6",
         "yoctocolors-cjs": "^2.1.2"
       },
       "engines": {
@@ -316,13 +315,13 @@
       }
     },
     "node_modules/@inquirer/input": {
-      "version": "4.1.8",
-      "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.8.tgz",
-      "integrity": "sha512-WXJI16oOZ3/LiENCAxe8joniNp8MQxF6Wi5V+EBbVA0ZIOpFcL4I9e7f7cXse0HJeIPCWO8Lcgnk98juItCi7Q==",
+      "version": "4.1.9",
+      "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.9.tgz",
+      "integrity": "sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==",
       "license": "MIT",
       "dependencies": {
-        "@inquirer/core": "^10.1.9",
-        "@inquirer/type": "^3.0.5"
+        "@inquirer/core": "^10.1.10",
+        "@inquirer/type": "^3.0.6"
       },
       "engines": {
         "node": ">=18"
@@ -337,13 +336,13 @@
       }
     },
     "node_modules/@inquirer/number": {
-      "version": "3.0.11",
-      "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.11.tgz",
-      "integrity": "sha512-pQK68CsKOgwvU2eA53AG/4npRTH2pvs/pZ2bFvzpBhrznh8Mcwt19c+nMO7LHRr3Vreu1KPhNBF3vQAKrjIulw==",
+      "version": "3.0.12",
+      "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.12.tgz",
+      "integrity": "sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q==",
       "license": "MIT",
       "dependencies": {
-        "@inquirer/core": "^10.1.9",
-        "@inquirer/type": "^3.0.5"
+        "@inquirer/core": "^10.1.10",
+        "@inquirer/type": "^3.0.6"
       },
       "engines": {
         "node": ">=18"
@@ -358,13 +357,13 @@
       }
     },
     "node_modules/@inquirer/password": {
-      "version": "4.0.11",
-      "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.11.tgz",
-      "integrity": "sha512-dH6zLdv+HEv1nBs96Case6eppkRggMe8LoOTl30+Gq5Wf27AO/vHFgStTVz4aoevLdNXqwE23++IXGw4eiOXTg==",
+      "version": "4.0.12",
+      "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.12.tgz",
+      "integrity": "sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g==",
       "license": "MIT",
       "dependencies": {
-        "@inquirer/core": "^10.1.9",
-        "@inquirer/type": "^3.0.5",
+        "@inquirer/core": "^10.1.10",
+        "@inquirer/type": "^3.0.6",
         "ansi-escapes": "^4.3.2"
       },
       "engines": {
@@ -380,21 +379,21 @@
       }
     },
     "node_modules/@inquirer/prompts": {
-      "version": "7.4.0",
-      "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.4.0.tgz",
-      "integrity": "sha512-EZiJidQOT4O5PYtqnu1JbF0clv36oW2CviR66c7ma4LsupmmQlUwmdReGKRp456OWPWMz3PdrPiYg3aCk3op2w==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.5.0.tgz",
+      "integrity": "sha512-tk8Bx7l5AX/CR0sVfGj3Xg6v7cYlFBkEahH+EgBB+cZib6Fc83dwerTbzj7f2+qKckjIUGsviWRI1d7lx6nqQA==",
       "license": "MIT",
       "dependencies": {
-        "@inquirer/checkbox": "^4.1.4",
-        "@inquirer/confirm": "^5.1.8",
-        "@inquirer/editor": "^4.2.9",
-        "@inquirer/expand": "^4.0.11",
-        "@inquirer/input": "^4.1.8",
-        "@inquirer/number": "^3.0.11",
-        "@inquirer/password": "^4.0.11",
-        "@inquirer/rawlist": "^4.0.11",
-        "@inquirer/search": "^3.0.11",
-        "@inquirer/select": "^4.1.0"
+        "@inquirer/checkbox": "^4.1.5",
+        "@inquirer/confirm": "^5.1.9",
+        "@inquirer/editor": "^4.2.10",
+        "@inquirer/expand": "^4.0.12",
+        "@inquirer/input": "^4.1.9",
+        "@inquirer/number": "^3.0.12",
+        "@inquirer/password": "^4.0.12",
+        "@inquirer/rawlist": "^4.1.0",
+        "@inquirer/search": "^3.0.12",
+        "@inquirer/select": "^4.2.0"
       },
       "engines": {
         "node": ">=18"
@@ -409,13 +408,13 @@
       }
     },
     "node_modules/@inquirer/rawlist": {
-      "version": "4.0.11",
-      "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.0.11.tgz",
-      "integrity": "sha512-uAYtTx0IF/PqUAvsRrF3xvnxJV516wmR6YVONOmCWJbbt87HcDHLfL9wmBQFbNJRv5kCjdYKrZcavDkH3sVJPg==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.0.tgz",
+      "integrity": "sha512-6ob45Oh9pXmfprKqUiEeMz/tjtVTFQTgDDz1xAMKMrIvyrYjAmRbQZjMJfsictlL4phgjLhdLu27IkHNnNjB7g==",
       "license": "MIT",
       "dependencies": {
-        "@inquirer/core": "^10.1.9",
-        "@inquirer/type": "^3.0.5",
+        "@inquirer/core": "^10.1.10",
+        "@inquirer/type": "^3.0.6",
         "yoctocolors-cjs": "^2.1.2"
       },
       "engines": {
@@ -431,14 +430,14 @@
       }
     },
     "node_modules/@inquirer/search": {
-      "version": "3.0.11",
-      "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.11.tgz",
-      "integrity": "sha512-9CWQT0ikYcg6Ls3TOa7jljsD7PgjcsYEM0bYE+Gkz+uoW9u8eaJCRHJKkucpRE5+xKtaaDbrND+nPDoxzjYyew==",
+      "version": "3.0.12",
+      "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.12.tgz",
+      "integrity": "sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ==",
       "license": "MIT",
       "dependencies": {
-        "@inquirer/core": "^10.1.9",
+        "@inquirer/core": "^10.1.10",
         "@inquirer/figures": "^1.0.11",
-        "@inquirer/type": "^3.0.5",
+        "@inquirer/type": "^3.0.6",
         "yoctocolors-cjs": "^2.1.2"
       },
       "engines": {
@@ -454,14 +453,14 @@
       }
     },
     "node_modules/@inquirer/select": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.1.0.tgz",
-      "integrity": "sha512-z0a2fmgTSRN+YBuiK1ROfJ2Nvrpij5lVN3gPDkQGhavdvIVGHGW29LwYZfM/j42Ai2hUghTI/uoBuTbrJk42bA==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.2.0.tgz",
+      "integrity": "sha512-KkXQ4aSySWimpV4V/TUJWdB3tdfENZUU765GjOIZ0uPwdbGIG6jrxD4dDf1w68uP+DVtfNhr1A92B+0mbTZ8FA==",
       "license": "MIT",
       "dependencies": {
-        "@inquirer/core": "^10.1.9",
+        "@inquirer/core": "^10.1.10",
         "@inquirer/figures": "^1.0.11",
-        "@inquirer/type": "^3.0.5",
+        "@inquirer/type": "^3.0.6",
         "ansi-escapes": "^4.3.2",
         "yoctocolors-cjs": "^2.1.2"
       },
@@ -478,9 +477,9 @@
       }
     },
     "node_modules/@inquirer/type": {
-      "version": "3.0.5",
-      "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
-      "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz",
+      "integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==",
       "license": "MIT",
       "engines": {
         "node": ">=18"
@@ -566,9 +565,9 @@
       "license": "MIT"
     },
     "node_modules/@typespec/compiler": {
-      "version": "1.0.0-rc.0",
-      "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.0.0-rc.0.tgz",
-      "integrity": "sha512-2N5DCFzuPt5rPXReE4T1boZrG60sr3dTMgZOS/WX+Rosc6iFj2v1ULTI2ySXk/Abd3oxS5OR24l8veIWEi0lzw==",
+      "version": "1.0.0-rc.1",
+      "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.0.0-rc.1.tgz",
+      "integrity": "sha512-SDCB19wCVQVGTHOwkKnOnaGH2/vpr5aHLhTOs2k36AVsFrkurpMkL0TeE2QKiJszmkQeOnGW3bgH7Hbw15kXtw==",
       "license": "MIT",
       "dependencies": {
         "@babel/code-frame": "~7.26.2",
@@ -583,7 +582,7 @@
         "prettier": "~3.5.3",
         "semver": "^7.7.1",
         "tar": "^7.4.3",
-        "temporal-polyfill": "^0.2.5",
+        "temporal-polyfill": "^0.3.0",
         "vscode-languageserver": "~9.0.1",
         "vscode-languageserver-textdocument": "~1.0.12",
         "yaml": "~2.7.0",
@@ -598,29 +597,29 @@
       }
     },
     "node_modules/@typespec/events": {
-      "version": "0.68.0",
-      "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.68.0.tgz",
-      "integrity": "sha512-U2y9K8QJ6HsmNxEyHz2aG2bmD05FIsLkmIZgmNaHDwhN1oyI8EH1NkxvwZCnEkPAN7ReuLYK6blouWFWX3s5eg==",
+      "version": "0.69.0",
+      "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.69.0.tgz",
+      "integrity": "sha512-2uq9s9yvqcTAvpIPdXBJ2QHMhQ5WhL5RwpbvvoHHx0locY7Ny9nmXCxFPF3MysHE9g4KK2CVwVB9RCu4i4q8Lw==",
       "license": "MIT",
       "peer": true,
       "engines": {
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@typespec/compiler": "^1.0.0-rc.0"
+        "@typespec/compiler": "^1.0.0-rc.1"
       }
     },
     "node_modules/@typespec/http": {
-      "version": "1.0.0-rc.0",
-      "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.0.0-rc.0.tgz",
-      "integrity": "sha512-Or2hhDXy8DZZoy3B/HudSrRHTFomiv6DI3vRpPKYT9ocIAxMGo1hQvqKye8uVk/QIMn/ouv6JUlP+pqjpfnPyw==",
+      "version": "1.0.0-rc.1",
+      "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.0.0-rc.1.tgz",
+      "integrity": "sha512-USAxsTeRF1i4g39KeHOh7/x1RzW4lpSpWQqlz/xuHAxEPVsu23BRq9AJrN/nTpgYlpGvOTbJnadWXOs20/TmBA==",
       "license": "MIT",
       "engines": {
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@typespec/compiler": "^1.0.0-rc.0",
-        "@typespec/streams": "^0.68.0"
+        "@typespec/compiler": "^1.0.0-rc.1",
+        "@typespec/streams": "^0.69.0"
       },
       "peerDependenciesMeta": {
         "@typespec/streams": {
@@ -629,82 +628,82 @@
       }
     },
     "node_modules/@typespec/openapi": {
-      "version": "1.0.0-rc.0",
-      "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.0.0-rc.0.tgz",
-      "integrity": "sha512-aswkRlzFI44CGe05qkzInA7jEhUKNxZYToYi5kXz05Jl5d4nh4VeEkCweb2pRL+4LKd2SZiOn09nXm+OKp5EoQ==",
+      "version": "1.0.0-rc.1",
+      "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.0.0-rc.1.tgz",
+      "integrity": "sha512-lHfn6luTc4OKpspHFfxnUD65+jhFvtp2YavCCagVZotl14U8+mxAXULZDwRgi2Wu5/CdII0v5WnA+yu1DSbFzA==",
       "license": "MIT",
       "engines": {
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@typespec/compiler": "^1.0.0-rc.0",
-        "@typespec/http": "^1.0.0-rc.0"
+        "@typespec/compiler": "^1.0.0-rc.1",
+        "@typespec/http": "^1.0.0-rc.1"
       }
     },
     "node_modules/@typespec/rest": {
-      "version": "0.68.0",
-      "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.68.0.tgz",
-      "integrity": "sha512-VJBEpC0MCFPPN6acc5o0fwQm4WMjMEl3aBHE+71XYkagsqb31rYSyfgfBMvHWaEMJV4dVk5T787/q6AWDzEE8g==",
+      "version": "0.69.0",
+      "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.69.0.tgz",
+      "integrity": "sha512-rbYG0XG6UYapJ6yG9Ytk5djkuaJ3QHG0WEQ01KpdNl4XEfpelH7wLStShP85nxrP4hmNZ6Slqm1Zng2kcyjkww==",
       "license": "MIT",
       "engines": {
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@typespec/compiler": "^1.0.0-rc.0",
-        "@typespec/http": "^1.0.0-rc.0"
+        "@typespec/compiler": "^1.0.0-rc.1",
+        "@typespec/http": "^1.0.0-rc.1"
       }
     },
     "node_modules/@typespec/sse": {
-      "version": "0.68.0",
-      "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.68.0.tgz",
-      "integrity": "sha512-sePc+14iw8BZjBPwBaCL23y7lDWrUtmoYuPbfxJhRcIzbv2ww5d7mjvv5C2fjWyfRvG7tJ6wDk8YoHQJDoqtVA==",
+      "version": "0.69.0",
+      "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.69.0.tgz",
+      "integrity": "sha512-IEuiW6Su+HzDPYAJqACgKisRZPxQ1SvLynBuNfm1nLD/VXhINzQboMbnoGeBxa6lZZlSzoyVlP5WG+4XBZnkVg==",
       "license": "MIT",
       "peer": true,
       "engines": {
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@typespec/compiler": "^1.0.0-rc.0",
-        "@typespec/events": "^0.68.0",
-        "@typespec/http": "^1.0.0-rc.0",
-        "@typespec/streams": "^0.68.0"
+        "@typespec/compiler": "^1.0.0-rc.1",
+        "@typespec/events": "^0.69.0",
+        "@typespec/http": "^1.0.0-rc.1",
+        "@typespec/streams": "^0.69.0"
       }
     },
     "node_modules/@typespec/streams": {
-      "version": "0.68.0",
-      "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.68.0.tgz",
-      "integrity": "sha512-FsyPYOcPA6CDptdsAI0kiwR9tG6pngf5Bi4PiKTsXwseu93v5Y4keLNr4SR+bNQQK6uYIm0OkoK34Z6qn6uZEw==",
+      "version": "0.69.0",
+      "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.69.0.tgz",
+      "integrity": "sha512-4GIXjWYUI38MEbq1hWfBEwvrze18sAsgWn7OQKFSTg+SvE6VDVP1J6Hfr4Ps+wNmn3x9tySEyX1NrwBlAZSJDQ==",
       "license": "MIT",
       "peer": true,
       "engines": {
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@typespec/compiler": "^1.0.0-rc.0"
+        "@typespec/compiler": "^1.0.0-rc.1"
       }
     },
     "node_modules/@typespec/versioning": {
-      "version": "0.68.0",
-      "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.68.0.tgz",
-      "integrity": "sha512-nsK0hbOeqfsNo1dsP64A4Ks0C/FEk5WJ5LEfgTwvFGdE48mHrj7UJdp58Ps5F6moiR9U20P1rHbo+mE0LDIRvA==",
+      "version": "0.69.0",
+      "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.69.0.tgz",
+      "integrity": "sha512-RqSd4Ee2O/6LdcQg2YfLgbsB6up0N8MGKFIxQ8PwE3z3l4lJju3chBMyBZxTxhaV293j7oUZr6+2CvfqwX2IWw==",
       "license": "MIT",
       "engines": {
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@typespec/compiler": "^1.0.0-rc.0"
+        "@typespec/compiler": "^1.0.0-rc.1"
       }
     },
     "node_modules/@typespec/xml": {
-      "version": "0.68.0",
-      "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.68.0.tgz",
-      "integrity": "sha512-uB904g9KMkuYKmGZnJsuozjPX+AKzZNStdXvMLq8+TkOitpJcb1dHtFH6KufG21xWuF0bmRUSkJvO4MOsuQNLA==",
+      "version": "0.69.0",
+      "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.69.0.tgz",
+      "integrity": "sha512-GomNfjvDIQXQv324ThQGteo8lKzecOitrJ1a1R72RvvUIKS2h5KPiGKwj/AQNT5c7r4EaqQXhd2OzZRrwg1SEA==",
       "license": "MIT",
       "engines": {
         "node": ">=20.0.0"
       },
       "peerDependencies": {
-        "@typespec/compiler": "^1.0.0-rc.0"
+        "@typespec/compiler": "^1.0.0-rc.1"
       }
     },
     "node_modules/ajv": {
@@ -1046,9 +1045,9 @@
       }
     },
     "node_modules/ignore": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz",
-      "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==",
+      "version": "7.0.4",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz",
+      "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==",
       "license": "MIT",
       "engines": {
         "node": ">= 4"
@@ -1501,18 +1500,18 @@
       }
     },
     "node_modules/temporal-polyfill": {
-      "version": "0.2.5",
-      "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.2.5.tgz",
-      "integrity": "sha512-ye47xp8Cb0nDguAhrrDS1JT1SzwEV9e26sSsrWzVu+yPZ7LzceEcH0i2gci9jWfOfSCCgM3Qv5nOYShVUUFUXA==",
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.3.0.tgz",
+      "integrity": "sha512-qNsTkX9K8hi+FHDfHmf22e/OGuXmfBm9RqNismxBrnSmZVJKegQ+HYYXT+R7Ha8F/YSm2Y34vmzD4cxMu2u95g==",
       "license": "MIT",
       "dependencies": {
-        "temporal-spec": "^0.2.4"
+        "temporal-spec": "0.3.0"
       }
     },
     "node_modules/temporal-spec": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.2.4.tgz",
-      "integrity": "sha512-lDMFv4nKQrSjlkHKAlHVqKrBG4DyFfa9F74cmBZ3Iy3ed8yvWnlWSIdi4IKfSqwmazAohBNwiN64qGx4y5Q3IQ==",
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.3.0.tgz",
+      "integrity": "sha512-n+noVpIqz4hYgFSMOSiINNOUOMFtV5cZQNCmmszA6GiVFVRt3G7AqVyhXjhCSmowvQn+NsGn+jMDMKJYHd3bSQ==",
       "license": "ISC"
     },
     "node_modules/tmp": {
diff --git a/eng/emitter-package.json b/eng/emitter-package.json
index 597a24ba0f3..817fd5be765 100644
--- a/eng/emitter-package.json
+++ b/eng/emitter-package.json
@@ -1,17 +1,17 @@
 {
   "main": "dist/src/index.js",
   "dependencies": {
-    "@azure-tools/typespec-rust": "0.13.3"
+    "@azure-tools/typespec-rust": "0.14.0"
   },
   "devDependencies": {
-    "@azure-tools/typespec-azure-core": "0.54.0",
-    "@azure-tools/typespec-azure-rulesets": "0.54.0",
-    "@azure-tools/typespec-client-generator-core": "0.54.0",
-    "@typespec/compiler": "1.0.0-rc.0",
-    "@typespec/http": "1.0.0-rc.0",
-    "@typespec/openapi": "1.0.0-rc.0",
-    "@typespec/rest": "0.68.0",
-    "@typespec/versioning": "0.68.0",
-    "@typespec/xml": "0.68.0"
+    "@azure-tools/typespec-azure-core": "0.55.0",
+    "@azure-tools/typespec-azure-rulesets": "0.55.0",
+    "@azure-tools/typespec-client-generator-core": "0.55.1",
+    "@typespec/compiler": "1.0.0-rc.1",
+    "@typespec/http": "1.0.0-rc.1",
+    "@typespec/openapi": "1.0.0-rc.1",
+    "@typespec/rest": "0.69.0",
+    "@typespec/versioning": "0.69.0",
+    "@typespec/xml": "0.69.0"
   }
 }
diff --git a/sdk/keyvault/azure_security_keyvault_certificates/README.md b/sdk/keyvault/azure_security_keyvault_certificates/README.md
index 70710f16a28..28327acf5c4 100644
--- a/sdk/keyvault/azure_security_keyvault_certificates/README.md
+++ b/sdk/keyvault/azure_security_keyvault_certificates/README.md
@@ -207,7 +207,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
 
     // Update a certificate using the certificate client.
     let certificate_update_parameters = UpdateCertificatePropertiesParameters {
-        tags: HashMap::from_iter(vec![("tag-name".into(), "tag-value".into())]),
+        tags: Some(HashMap::from_iter(vec![("tag-name".into(), "tag-value".into())])),
         ..Default::default()
     };
 
@@ -322,7 +322,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
     let policy = CertificatePolicy {
         x509_certificate_properties: Some(X509CertificateProperties {
             subject: Some("CN=DefaultPolicy".into()),
-            key_usage: vec![KeyUsageType::DigitalSignature],
+            key_usage: Some(vec![KeyUsageType::DigitalSignature]),
             ..Default::default()
         }),
         issuer_parameters: Some(IssuerParameters {
diff --git a/sdk/keyvault/azure_security_keyvault_certificates/src/generated/clients/certificate_client.rs b/sdk/keyvault/azure_security_keyvault_certificates/src/generated/clients/certificate_client.rs
index 42862a7c9c2..3db545c44fb 100644
--- a/sdk/keyvault/azure_security_keyvault_certificates/src/generated/clients/certificate_client.rs
+++ b/sdk/keyvault/azure_security_keyvault_certificates/src/generated/clients/certificate_client.rs
@@ -511,7 +511,7 @@ impl CertificateClient {
                     pipeline.send(&ctx, &mut request).await?;
                 let (status, headers, body) = rsp.deconstruct();
                 let bytes = body.collect().await?;
-                let res: ListCertificatePropertiesResult = json::from_json(bytes.clone())?;
+                let res: ListCertificatePropertiesResult = json::from_json(&bytes)?;
                 let rsp = Response::from_bytes(status, headers, bytes);
                 Ok(match res.next_link {
                     Some(next_link) => PagerResult::Continue {
@@ -578,7 +578,7 @@ impl CertificateClient {
                     pipeline.send(&ctx, &mut request).await?;
                 let (status, headers, body) = rsp.deconstruct();
                 let bytes = body.collect().await?;
-                let res: ListCertificatePropertiesResult = json::from_json(bytes.clone())?;
+                let res: ListCertificatePropertiesResult = json::from_json(&bytes)?;
                 let rsp = Response::from_bytes(status, headers, bytes);
                 Ok(match res.next_link {
                     Some(next_link) => PagerResult::Continue {
@@ -647,7 +647,7 @@ impl CertificateClient {
                     pipeline.send(&ctx, &mut request).await?;
                 let (status, headers, body) = rsp.deconstruct();
                 let bytes = body.collect().await?;
-                let res: ListDeletedCertificatePropertiesResult = json::from_json(bytes.clone())?;
+                let res: ListDeletedCertificatePropertiesResult = json::from_json(&bytes)?;
                 let rsp = Response::from_bytes(status, headers, bytes);
                 Ok(match res.next_link {
                     Some(next_link) => PagerResult::Continue {
@@ -710,7 +710,7 @@ impl CertificateClient {
                     pipeline.send(&ctx, &mut request).await?;
                 let (status, headers, body) = rsp.deconstruct();
                 let bytes = body.collect().await?;
-                let res: ListIssuerPropertiesResult = json::from_json(bytes.clone())?;
+                let res: ListIssuerPropertiesResult = json::from_json(&bytes)?;
                 let rsp = Response::from_bytes(status, headers, bytes);
                 Ok(match res.next_link {
                     Some(next_link) => PagerResult::Continue {
diff --git a/sdk/keyvault/azure_security_keyvault_certificates/src/generated/models/models_serde.rs b/sdk/keyvault/azure_security_keyvault_certificates/src/generated/models/models_serde.rs
index 7aaeb20d2e1..5eb7fc21474 100644
--- a/sdk/keyvault/azure_security_keyvault_certificates/src/generated/models/models_serde.rs
+++ b/sdk/keyvault/azure_security_keyvault_certificates/src/generated/models/models_serde.rs
@@ -85,13 +85,13 @@ impl TryFrom<UpdateIssuerParameters> for RequestContent<UpdateIssuerParameters>
     }
 }
 
-pub mod vec_encoded_bytes_std {
+pub mod option_vec_encoded_bytes_std {
     #![allow(clippy::type_complexity)]
     use azure_core::base64;
     use serde::{Deserialize, Deserializer, Serialize, Serializer};
     use std::result::Result;
 
-    pub fn deserialize<'de, D>(deserializer: D) -> Result<Vec<Vec<u8>>, D::Error>
+    pub fn deserialize<'de, D>(deserializer: D) -> Result<Option<Vec<Vec<u8>>>, D::Error>
     where
         D: Deserializer<'de>,
     {
@@ -102,17 +102,24 @@ pub mod vec_encoded_bytes_std {
                 for v in to_deserialize {
                     decoded0.push(base64::decode(v).map_err(serde::de::Error::custom)?);
                 }
-                Ok(decoded0)
+                Ok(Some(decoded0))
             }
-            None => Ok(<Vec<Vec<u8>>>::default()),
+            None => Ok(None),
         }
     }
 
-    pub fn serialize<S>(to_serialize: &[Vec<u8>], serializer: S) -> Result<S::Ok, S::Error>
+    pub fn serialize<S>(
+        to_serialize: &Option<Vec<Vec<u8>>>,
+        serializer: S,
+    ) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
-        let encoded0 = to_serialize.iter().map(base64::encode).collect();
-        <Vec<String>>::serialize(&encoded0, serializer)
+        if let Some(to_serialize) = to_serialize {
+            let encoded0 = to_serialize.iter().map(base64::encode).collect();
+            <Option<Vec<String>>>::serialize(&Some(encoded0), serializer)
+        } else {
+            serializer.serialize_none()
+        }
     }
 }
diff --git a/sdk/keyvault/azure_security_keyvault_certificates/src/generated/models/pub_models.rs b/sdk/keyvault/azure_security_keyvault_certificates/src/generated/models/pub_models.rs
index 9d8f8e20ba0..3e435a92026 100644
--- a/sdk/keyvault/azure_security_keyvault_certificates/src/generated/models/pub_models.rs
+++ b/sdk/keyvault/azure_security_keyvault_certificates/src/generated/models/pub_models.rs
@@ -88,8 +88,8 @@ pub struct Certificate {
     pub sid: Option<String>,
 
     /// Application specific metadata in the form of key-value pairs
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 
     /// Thumbprint of the certificate.
     #[serde(
@@ -225,8 +225,8 @@ pub struct CertificatePolicy {
     pub key_properties: Option<KeyProperties>,
 
     /// Actions that will be performed by Key Vault over the lifetime of a certificate.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
-    pub lifetime_actions: Vec<LifetimeAction>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub lifetime_actions: Option<Vec<LifetimeAction>>,
 
     /// Properties of the secret backing a certificate.
     #[serde(rename = "secret_props", skip_serializing_if = "Option::is_none")]
@@ -250,8 +250,8 @@ pub struct CertificateProperties {
     pub id: Option<String>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 
     /// Thumbprint of the certificate.
     #[serde(
@@ -284,8 +284,8 @@ pub struct Contact {
 #[derive(Clone, Default, Deserialize, SafeDebug, Serialize, azure_core::http::Model)]
 pub struct Contacts {
     /// The contact list for the vault certificates.
-    #[serde(default, rename = "contacts", skip_serializing_if = "Vec::is_empty")]
-    pub contact_list: Vec<Contact>,
+    #[serde(rename = "contacts", skip_serializing_if = "Option::is_none")]
+    pub contact_list: Option<Vec<Contact>>,
 
     /// Identifier for the contacts collection.
     #[serde(skip_serializing_if = "Option::is_none")]
@@ -309,8 +309,8 @@ pub struct CreateCertificateParameters {
     pub preserve_cert_order: Option<bool>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
 
 /// A Deleted Certificate consisting of its previous id, attributes and its tags, as well as information on when it will be
@@ -379,8 +379,8 @@ pub struct DeletedCertificate {
     pub sid: Option<String>,
 
     /// Application specific metadata in the form of key-value pairs
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 
     /// Thumbprint of the certificate.
     #[serde(
@@ -428,8 +428,8 @@ pub struct DeletedCertificateProperties {
     pub scheduled_purge_date: Option<OffsetDateTime>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 
     /// Thumbprint of the certificate.
     #[serde(
@@ -467,8 +467,8 @@ pub struct ImportCertificateParameters {
     pub preserve_cert_order: Option<bool>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
 
 /// The issuer for Key Vault certificate.
@@ -644,7 +644,7 @@ pub struct ListCertificatePropertiesResult {
     pub next_link: Option<String>,
 
     /// A response message containing a list of certificates in the key vault along with a link to the next page of certificates.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
+    #[serde(default)]
     pub value: Vec<CertificateProperties>,
 }
 
@@ -658,7 +658,7 @@ pub struct ListDeletedCertificatePropertiesResult {
 
     /// A response message containing a list of deleted certificates in the vault along with a link to the next page of deleted
     /// certificates.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
+    #[serde(default)]
     pub value: Vec<DeletedCertificateProperties>,
 }
 
@@ -672,7 +672,7 @@ pub struct ListIssuerPropertiesResult {
 
     /// A response message containing a list of certificate issuers in the key vault along with a link to the next page of certificate
     /// issuers.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
+    #[serde(default)]
     pub value: Vec<IssuerProperties>,
 }
 
@@ -684,29 +684,25 @@ pub struct MergeCertificateParameters {
     pub certificate_attributes: Option<CertificateAttributes>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 
     /// The certificate or the certificate chain to merge.
     #[serde(
         default,
         rename = "x5c",
-        skip_serializing_if = "Vec::is_empty",
-        with = "models_serde::vec_encoded_bytes_std"
+        skip_serializing_if = "Option::is_none",
+        with = "models_serde::option_vec_encoded_bytes_std"
     )]
-    pub x509_certificates: Vec<Vec<u8>>,
+    pub x509_certificates: Option<Vec<Vec<u8>>>,
 }
 
 /// Details of the organization of the certificate issuer.
 #[derive(Clone, Default, Deserialize, SafeDebug, Serialize, azure_core::http::Model)]
 pub struct OrganizationDetails {
     /// Details of the organization administrator.
-    #[serde(
-        default,
-        rename = "admin_details",
-        skip_serializing_if = "Vec::is_empty"
-    )]
-    pub admin_contacts: Vec<AdministratorContact>,
+    #[serde(rename = "admin_details", skip_serializing_if = "Option::is_none")]
+    pub admin_contacts: Option<Vec<AdministratorContact>>,
 
     /// Id of the organization.
     #[serde(skip_serializing_if = "Option::is_none")]
@@ -759,16 +755,16 @@ pub struct SetIssuerParameters {
 #[derive(Clone, Default, Deserialize, SafeDebug, Serialize, azure_core::http::Model)]
 pub struct SubjectAlternativeNames {
     /// Domain names.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
-    pub dns_names: Vec<String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub dns_names: Option<Vec<String>>,
 
     /// Email addresses.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
-    pub emails: Vec<String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub emails: Option<Vec<String>>,
 
     /// User principal names.
-    #[serde(default, rename = "upns", skip_serializing_if = "Vec::is_empty")]
-    pub user_principal_names: Vec<String>,
+    #[serde(rename = "upns", skip_serializing_if = "Option::is_none")]
+    pub user_principal_names: Option<Vec<String>>,
 }
 
 /// The certificate operation update parameters.
@@ -791,8 +787,8 @@ pub struct UpdateCertificatePropertiesParameters {
     pub certificate_policy: Option<CertificatePolicy>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
 
 /// The certificate issuer update parameters.
@@ -819,12 +815,12 @@ pub struct UpdateIssuerParameters {
 #[derive(Clone, Default, Deserialize, SafeDebug, Serialize, azure_core::http::Model)]
 pub struct X509CertificateProperties {
     /// The enhanced key usage.
-    #[serde(default, rename = "ekus", skip_serializing_if = "Vec::is_empty")]
-    pub enhanced_key_usage: Vec<String>,
+    #[serde(rename = "ekus", skip_serializing_if = "Option::is_none")]
+    pub enhanced_key_usage: Option<Vec<String>>,
 
     /// Defines how the certificate's key may be used.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
-    pub key_usage: Vec<KeyUsageType>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub key_usage: Option<Vec<KeyUsageType>>,
 
     /// The subject name. Should be a valid X509 distinguished Name.
     #[serde(skip_serializing_if = "Option::is_none")]
diff --git a/sdk/keyvault/azure_security_keyvault_certificates/tests/certificate_client.rs b/sdk/keyvault/azure_security_keyvault_certificates/tests/certificate_client.rs
index 971b7db2bd4..188abe1ac61 100644
--- a/sdk/keyvault/azure_security_keyvault_certificates/tests/certificate_client.rs
+++ b/sdk/keyvault/azure_security_keyvault_certificates/tests/certificate_client.rs
@@ -111,10 +111,10 @@ async fn update_certificate_properties(ctx: TestContext) -> Result<()> {
     // Update certificate properties.
     let parameters = UpdateCertificatePropertiesParameters {
         certificate_attributes: certificate.attributes,
-        tags: HashMap::from_iter(vec![(
+        tags: Some(HashMap::from_iter(vec![(
             "test-name".into(),
             "update_certificate_properties".into(),
-        )]),
+        )])),
         ..Default::default()
     };
     let certificate = client
@@ -129,7 +129,7 @@ async fn update_certificate_properties(ctx: TestContext) -> Result<()> {
         .await?;
 
     assert_eq!(
-        certificate.tags.get("test-name"),
+        certificate.tags.expect("expected tags").get("test-name"),
         Some(&String::from("update_certificate_properties"))
     );
 
diff --git a/sdk/keyvault/azure_security_keyvault_keys/README.md b/sdk/keyvault/azure_security_keyvault_keys/README.md
index fdcadb7d484..ed1c3a918cb 100644
--- a/sdk/keyvault/azure_security_keyvault_keys/README.md
+++ b/sdk/keyvault/azure_security_keyvault_keys/README.md
@@ -196,7 +196,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
 
     // Update a key using the key client.
     let key_update_parameters = UpdateKeyPropertiesParameters {
-        tags: HashMap::from_iter(vec![("tag-name".into(), "tag-value".into())]),
+        tags: Some(HashMap::from_iter(vec![("tag-name".into(), "tag-value".into())])),
         ..Default::default()
     };
 
diff --git a/sdk/keyvault/azure_security_keyvault_keys/src/generated/clients/key_client.rs b/sdk/keyvault/azure_security_keyvault_keys/src/generated/clients/key_client.rs
index 9414adac784..601f27c6fcb 100644
--- a/sdk/keyvault/azure_security_keyvault_keys/src/generated/clients/key_client.rs
+++ b/sdk/keyvault/azure_security_keyvault_keys/src/generated/clients/key_client.rs
@@ -490,7 +490,7 @@ impl KeyClient {
                     pipeline.send(&ctx, &mut request).await?;
                 let (status, headers, body) = rsp.deconstruct();
                 let bytes = body.collect().await?;
-                let res: ListDeletedKeyPropertiesResult = json::from_json(bytes.clone())?;
+                let res: ListDeletedKeyPropertiesResult = json::from_json(&bytes)?;
                 let rsp = Response::from_bytes(status, headers, bytes);
                 Ok(match res.next_link {
                     Some(next_link) => PagerResult::Continue {
@@ -554,7 +554,7 @@ impl KeyClient {
                     pipeline.send(&ctx, &mut request).await?;
                 let (status, headers, body) = rsp.deconstruct();
                 let bytes = body.collect().await?;
-                let res: ListKeyPropertiesResult = json::from_json(bytes.clone())?;
+                let res: ListKeyPropertiesResult = json::from_json(&bytes)?;
                 let rsp = Response::from_bytes(status, headers, bytes);
                 Ok(match res.next_link {
                     Some(next_link) => PagerResult::Continue {
@@ -620,7 +620,7 @@ impl KeyClient {
                     pipeline.send(&ctx, &mut request).await?;
                 let (status, headers, body) = rsp.deconstruct();
                 let bytes = body.collect().await?;
-                let res: ListKeyPropertiesResult = json::from_json(bytes.clone())?;
+                let res: ListKeyPropertiesResult = json::from_json(&bytes)?;
                 let rsp = Response::from_bytes(status, headers, bytes);
                 Ok(match res.next_link {
                     Some(next_link) => PagerResult::Continue {
diff --git a/sdk/keyvault/azure_security_keyvault_keys/src/generated/models/pub_models.rs b/sdk/keyvault/azure_security_keyvault_keys/src/generated/models/pub_models.rs
index 74bbd45ad89..92c6b405741 100644
--- a/sdk/keyvault/azure_security_keyvault_keys/src/generated/models/pub_models.rs
+++ b/sdk/keyvault/azure_security_keyvault_keys/src/generated/models/pub_models.rs
@@ -38,8 +38,8 @@ pub struct CreateKeyParameters {
     pub key_attributes: Option<KeyAttributes>,
 
     /// Json web key operations. For more information on possible key operations, see JsonWebKeyOperation.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
-    pub key_ops: Vec<KeyOperation>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub key_ops: Option<Vec<KeyOperation>>,
 
     /// The key size in bits. For example: 2048, 3072, or 4096 for RSA.
     #[serde(skip_serializing_if = "Option::is_none")]
@@ -58,8 +58,8 @@ pub struct CreateKeyParameters {
     pub release_policy: Option<KeyReleasePolicy>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
 
 /// A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion info
@@ -105,8 +105,8 @@ pub struct DeletedKey {
     pub scheduled_purge_date: Option<OffsetDateTime>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
 
 /// The deleted key item containing the deleted key metadata and information about deletion.
@@ -148,8 +148,8 @@ pub struct DeletedKeyProperties {
     pub scheduled_purge_date: Option<OffsetDateTime>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
 
 /// The get random bytes request object.
@@ -180,8 +180,8 @@ pub struct ImportKeyParameters {
     pub release_policy: Option<KeyReleasePolicy>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
 
 /// As of <http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18>
@@ -237,8 +237,8 @@ pub struct JsonWebKey {
     pub k: Option<Vec<u8>>,
 
     /// Json web key operations. For more information on possible key operations, see JsonWebKeyOperation.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
-    pub key_ops: Vec<String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub key_ops: Option<Vec<String>>,
 
     /// Key identifier.
     #[serde(skip_serializing_if = "Option::is_none")]
@@ -334,8 +334,8 @@ pub struct Key {
     pub release_policy: Option<KeyReleasePolicy>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
 
 /// The key attestation information.
@@ -552,8 +552,8 @@ pub struct KeyProperties {
     pub managed: Option<bool>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
 
 /// The policy rules under which the key can be exported.
@@ -602,12 +602,8 @@ pub struct KeyRotationPolicy {
     /// Actions that will be performed by Key Vault over the lifetime of a key. For preview, lifetimeActions can only have two
     /// items at maximum: one for rotate, one for notify. Notification time would be default to 30 days before expiry and it is
     /// not configurable.
-    #[serde(
-        default,
-        rename = "lifetimeActions",
-        skip_serializing_if = "Vec::is_empty"
-    )]
-    pub lifetime_actions: Vec<LifetimeAction>,
+    #[serde(rename = "lifetimeActions", skip_serializing_if = "Option::is_none")]
+    pub lifetime_actions: Option<Vec<LifetimeAction>>,
 }
 
 /// The key rotation policy attributes.
@@ -686,7 +682,7 @@ pub struct ListDeletedKeyPropertiesResult {
     pub next_link: Option<String>,
 
     /// A response message containing a list of deleted keys in the key vault along with a link to the next page of deleted keys.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
+    #[serde(default)]
     pub value: Vec<DeletedKeyProperties>,
 }
 
@@ -699,7 +695,7 @@ pub struct ListKeyPropertiesResult {
     pub next_link: Option<String>,
 
     /// A response message containing a list of keys in the key vault along with a link to the next page of keys.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
+    #[serde(default)]
     pub value: Vec<KeyProperties>,
 }
 
@@ -772,16 +768,16 @@ pub struct UpdateKeyPropertiesParameters {
     pub key_attributes: Option<KeyAttributes>,
 
     /// Json web key operations. For more information on possible key operations, see JsonWebKeyOperation.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
-    pub key_ops: Vec<KeyOperation>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub key_ops: Option<Vec<KeyOperation>>,
 
     /// The policy rules under which the key can be exported.
     #[serde(skip_serializing_if = "Option::is_none")]
     pub release_policy: Option<KeyReleasePolicy>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
 
 /// The key verify parameters.
diff --git a/sdk/keyvault/azure_security_keyvault_keys/tests/key_client.rs b/sdk/keyvault/azure_security_keyvault_keys/tests/key_client.rs
index 621d27222e9..62fe1f96362 100644
--- a/sdk/keyvault/azure_security_keyvault_keys/tests/key_client.rs
+++ b/sdk/keyvault/azure_security_keyvault_keys/tests/key_client.rs
@@ -83,7 +83,10 @@ async fn update_key_properties(ctx: TestContext) -> Result<()> {
     // Update key properties.
     let properties = UpdateKeyPropertiesParameters {
         key_attributes: key.attributes,
-        tags: HashMap::from_iter(vec![("test-name".into(), "update_key_properties".into())]),
+        tags: Some(HashMap::from_iter(vec![(
+            "test-name".into(),
+            "update_key_properties".into(),
+        )])),
         ..Default::default()
     };
     let key = client
@@ -92,7 +95,7 @@ async fn update_key_properties(ctx: TestContext) -> Result<()> {
         .into_body()
         .await?;
     assert_eq!(
-        key.tags.get("test-name"),
+        key.tags.expect("expected tags").get("test-name"),
         Some(&String::from("update_key_properties"))
     );
 
diff --git a/sdk/keyvault/azure_security_keyvault_secrets/README.md b/sdk/keyvault/azure_security_keyvault_secrets/README.md
index f597f08ffe4..56f01655293 100644
--- a/sdk/keyvault/azure_security_keyvault_secrets/README.md
+++ b/sdk/keyvault/azure_security_keyvault_secrets/README.md
@@ -211,10 +211,10 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
     // Update a secret using the secret client.
     let secret_update_parameters = UpdateSecretPropertiesParameters {
         content_type: Some("text/plain".into()),
-        tags: HashMap::from_iter(vec![(
+        tags: Some(HashMap::from_iter(vec![(
             "tag-name".into(),
             "tag-value".into(),
-        )]),
+        )])),
         ..Default::default()
     };
 
diff --git a/sdk/keyvault/azure_security_keyvault_secrets/src/generated/clients/secret_client.rs b/sdk/keyvault/azure_security_keyvault_secrets/src/generated/clients/secret_client.rs
index 08a0f0e1542..20dba1ad96a 100644
--- a/sdk/keyvault/azure_security_keyvault_secrets/src/generated/clients/secret_client.rs
+++ b/sdk/keyvault/azure_security_keyvault_secrets/src/generated/clients/secret_client.rs
@@ -248,7 +248,7 @@ impl SecretClient {
                     pipeline.send(&ctx, &mut request).await?;
                 let (status, headers, body) = rsp.deconstruct();
                 let bytes = body.collect().await?;
-                let res: ListDeletedSecretPropertiesResult = json::from_json(bytes.clone())?;
+                let res: ListDeletedSecretPropertiesResult = json::from_json(&bytes)?;
                 let rsp = Response::from_bytes(status, headers, bytes);
                 Ok(match res.next_link {
                     Some(next_link) => PagerResult::Continue {
@@ -312,7 +312,7 @@ impl SecretClient {
                     pipeline.send(&ctx, &mut request).await?;
                 let (status, headers, body) = rsp.deconstruct();
                 let bytes = body.collect().await?;
-                let res: ListSecretPropertiesResult = json::from_json(bytes.clone())?;
+                let res: ListSecretPropertiesResult = json::from_json(&bytes)?;
                 let rsp = Response::from_bytes(status, headers, bytes);
                 Ok(match res.next_link {
                     Some(next_link) => PagerResult::Continue {
@@ -379,7 +379,7 @@ impl SecretClient {
                     pipeline.send(&ctx, &mut request).await?;
                 let (status, headers, body) = rsp.deconstruct();
                 let bytes = body.collect().await?;
-                let res: ListSecretPropertiesResult = json::from_json(bytes.clone())?;
+                let res: ListSecretPropertiesResult = json::from_json(&bytes)?;
                 let rsp = Response::from_bytes(status, headers, bytes);
                 Ok(match res.next_link {
                     Some(next_link) => PagerResult::Continue {
diff --git a/sdk/keyvault/azure_security_keyvault_secrets/src/generated/models/pub_models.rs b/sdk/keyvault/azure_security_keyvault_secrets/src/generated/models/pub_models.rs
index 5ed3738899c..e18192af630 100644
--- a/sdk/keyvault/azure_security_keyvault_secrets/src/generated/models/pub_models.rs
+++ b/sdk/keyvault/azure_security_keyvault_secrets/src/generated/models/pub_models.rs
@@ -71,8 +71,8 @@ pub struct DeletedSecret {
     pub scheduled_purge_date: Option<OffsetDateTime>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 
     /// The secret value.
     #[serde(skip_serializing_if = "Option::is_none")]
@@ -122,8 +122,8 @@ pub struct DeletedSecretProperties {
     pub scheduled_purge_date: Option<OffsetDateTime>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
 
 /// The deleted secret list result
@@ -136,7 +136,7 @@ pub struct ListDeletedSecretPropertiesResult {
 
     /// A response message containing a list of deleted secrets in the key vault along with a link to the next page of deleted
     /// secrets.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
+    #[serde(default)]
     pub value: Vec<DeletedSecretProperties>,
 }
 
@@ -149,7 +149,7 @@ pub struct ListSecretPropertiesResult {
     pub next_link: Option<String>,
 
     /// A response message containing a list of secrets in the key vault along with a link to the next page of secrets.
-    #[serde(default, skip_serializing_if = "Vec::is_empty")]
+    #[serde(default)]
     pub value: Vec<SecretProperties>,
 }
 
@@ -193,8 +193,8 @@ pub struct Secret {
     pub managed: Option<bool>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 
     /// The secret value.
     #[serde(skip_serializing_if = "Option::is_none")]
@@ -274,8 +274,8 @@ pub struct SecretProperties {
     pub managed: Option<bool>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
 
 /// The secret set parameters.
@@ -290,8 +290,8 @@ pub struct SetSecretParameters {
     pub secret_attributes: Option<SecretAttributes>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 
     /// The value of the secret.
     #[serde(skip_serializing_if = "Option::is_none")]
@@ -310,6 +310,6 @@ pub struct UpdateSecretPropertiesParameters {
     pub secret_attributes: Option<SecretAttributes>,
 
     /// Application specific metadata in the form of key-value pairs.
-    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
-    pub tags: HashMap<String, String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub tags: Option<HashMap<String, String>>,
 }
diff --git a/sdk/keyvault/azure_security_keyvault_secrets/tests/secret_client.rs b/sdk/keyvault/azure_security_keyvault_secrets/tests/secret_client.rs
index db2ad21732b..cdfe509e726 100644
--- a/sdk/keyvault/azure_security_keyvault_secrets/tests/secret_client.rs
+++ b/sdk/keyvault/azure_security_keyvault_secrets/tests/secret_client.rs
@@ -79,10 +79,10 @@ async fn update_secret_properties(ctx: TestContext) -> Result<()> {
     let properties = UpdateSecretPropertiesParameters {
         content_type: Some("text/plain".into()),
         secret_attributes: secret.attributes,
-        tags: HashMap::from_iter(vec![(
+        tags: Some(HashMap::from_iter(vec![(
             "test-name".into(),
             "update_secret_properties".into(),
-        )]),
+        )])),
     };
     let secret = client
         .update_secret_properties("update-secret", "", properties.try_into()?, None)
@@ -91,7 +91,7 @@ async fn update_secret_properties(ctx: TestContext) -> Result<()> {
         .await?;
     assert_eq!(secret.content_type, Some("text/plain".into()));
     assert_eq!(
-        secret.tags.get("test-name"),
+        secret.tags.expect("expected tags").get("test-name"),
         Some(&String::from("update_secret_properties"))
     );
 
diff --git a/sdk/storage/azure_storage_blob/src/clients/block_blob_client.rs b/sdk/storage/azure_storage_blob/src/clients/block_blob_client.rs
index 56402ead85e..cd58b28848e 100644
--- a/sdk/storage/azure_storage_blob/src/clients/block_blob_client.rs
+++ b/sdk/storage/azure_storage_blob/src/clients/block_blob_client.rs
@@ -119,7 +119,7 @@ impl BlockBlobClient {
     /// * `options` - Optional configuration for the request.
     pub async fn stage_block(
         &self,
-        block_id: Vec<u8>,
+        block_id: &[u8],
         content_length: u64,
         body: RequestContent<Bytes>,
         options: Option<BlockBlobClientStageBlockOptions<'_>>,
diff --git a/sdk/storage/azure_storage_blob/src/generated/clients/append_blob_client.rs b/sdk/storage/azure_storage_blob/src/generated/clients/append_blob_client.rs
index ca4f82b4f2a..29c089ddfdd 100644
--- a/sdk/storage/azure_storage_blob/src/generated/clients/append_blob_client.rs
+++ b/sdk/storage/azure_storage_blob/src/generated/clients/append_blob_client.rs
@@ -194,7 +194,7 @@ impl AppendBlobClient {
     /// * `options` - Optional parameters for the request.
     pub async fn append_block_from_url(
         &self,
-        source_url: &str,
+        source_url: String,
         content_length: u64,
         options: Option<AppendBlobClientAppendBlockFromUrlOptions<'_>>,
     ) -> Result<Response<AppendBlobClientAppendBlockFromUrlResult>> {
@@ -243,7 +243,7 @@ impl AppendBlobClient {
         if let Some(client_request_id) = options.client_request_id {
             request.insert_header("x-ms-client-request-id", client_request_id);
         }
-        request.insert_header("x-ms-copy-source", source_url.to_owned());
+        request.insert_header("x-ms-copy-source", source_url);
         if let Some(copy_source_authorization) = options.copy_source_authorization {
             request.insert_header("x-ms-copy-source-authorization", copy_source_authorization);
         }
diff --git a/sdk/storage/azure_storage_blob/src/generated/clients/blob_client.rs b/sdk/storage/azure_storage_blob/src/generated/clients/blob_client.rs
index 17ae16cf101..a2790d6fe30 100644
--- a/sdk/storage/azure_storage_blob/src/generated/clients/blob_client.rs
+++ b/sdk/storage/azure_storage_blob/src/generated/clients/blob_client.rs
@@ -268,7 +268,7 @@ impl BlobClient {
     /// * `options` - Optional parameters for the request.
     pub async fn change_lease(
         &self,
-        lease_id: &str,
+        lease_id: String,
         options: Option<BlobClientChangeLeaseOptions<'_>>,
     ) -> Result<Response<BlobClientChangeLeaseResult>> {
         let options = options.unwrap_or_default();
@@ -309,7 +309,7 @@ impl BlobClient {
         if let Some(if_tags) = options.if_tags {
             request.insert_header("x-ms-if-tags", if_tags);
         }
-        request.insert_header("x-ms-lease-id", lease_id.to_owned());
+        request.insert_header("x-ms-lease-id", lease_id);
         if let Some(proposed_lease_id) = options.proposed_lease_id {
             request.insert_header("x-ms-proposed-lease-id", proposed_lease_id);
         }
@@ -328,7 +328,7 @@ impl BlobClient {
     /// * `options` - Optional parameters for the request.
     pub async fn copy_from_url(
         &self,
-        copy_source: &str,
+        copy_source: String,
         options: Option<BlobClientCopyFromUrlOptions<'_>>,
     ) -> Result<Response<BlobClientCopyFromUrlResult>> {
         let options = options.unwrap_or_default();
@@ -369,7 +369,7 @@ impl BlobClient {
         if let Some(client_request_id) = options.client_request_id {
             request.insert_header("x-ms-client-request-id", client_request_id);
         }
-        request.insert_header("x-ms-copy-source", copy_source.to_owned());
+        request.insert_header("x-ms-copy-source", copy_source);
         if let Some(copy_source_authorization) = options.copy_source_authorization {
             request.insert_header("x-ms-copy-source-authorization", copy_source_authorization);
         }
@@ -889,7 +889,7 @@ impl BlobClient {
     /// * `options` - Optional parameters for the request.
     pub async fn release_lease(
         &self,
-        lease_id: &str,
+        lease_id: String,
         options: Option<BlobClientReleaseLeaseOptions<'_>>,
     ) -> Result<Response<BlobClientReleaseLeaseResult>> {
         let options = options.unwrap_or_default();
@@ -930,7 +930,7 @@ impl BlobClient {
         if let Some(if_tags) = options.if_tags {
             request.insert_header("x-ms-if-tags", if_tags);
         }
-        request.insert_header("x-ms-lease-id", lease_id.to_owned());
+        request.insert_header("x-ms-lease-id", lease_id);
         request.insert_header("x-ms-version", &self.version);
         self.pipeline.send(&ctx, &mut request).await
     }
@@ -944,7 +944,7 @@ impl BlobClient {
     /// * `options` - Optional parameters for the request.
     pub async fn renew_lease(
         &self,
-        lease_id: &str,
+        lease_id: String,
         options: Option<BlobClientRenewLeaseOptions<'_>>,
     ) -> Result<Response<BlobClientRenewLeaseResult>> {
         let options = options.unwrap_or_default();
@@ -985,7 +985,7 @@ impl BlobClient {
         if let Some(if_tags) = options.if_tags {
             request.insert_header("x-ms-if-tags", if_tags);
         }
-        request.insert_header("x-ms-lease-id", lease_id.to_owned());
+        request.insert_header("x-ms-lease-id", lease_id);
         request.insert_header("x-ms-version", &self.version);
         self.pipeline.send(&ctx, &mut request).await
     }
@@ -1377,7 +1377,7 @@ impl BlobClient {
     /// * `options` - Optional parameters for the request.
     pub async fn start_copy_from_url(
         &self,
-        copy_source: &str,
+        copy_source: String,
         options: Option<BlobClientStartCopyFromUrlOptions<'_>>,
     ) -> Result<Response<BlobClientStartCopyFromUrlResult>> {
         let options = options.unwrap_or_default();
@@ -1416,7 +1416,7 @@ impl BlobClient {
         if let Some(client_request_id) = options.client_request_id {
             request.insert_header("x-ms-client-request-id", client_request_id);
         }
-        request.insert_header("x-ms-copy-source", copy_source.to_owned());
+        request.insert_header("x-ms-copy-source", copy_source);
         if let Some(if_tags) = options.if_tags {
             request.insert_header("x-ms-if-tags", if_tags);
         }
diff --git a/sdk/storage/azure_storage_blob/src/generated/clients/blob_container_client.rs b/sdk/storage/azure_storage_blob/src/generated/clients/blob_container_client.rs
index 059d49ff8a5..788cdd72639 100644
--- a/sdk/storage/azure_storage_blob/src/generated/clients/blob_container_client.rs
+++ b/sdk/storage/azure_storage_blob/src/generated/clients/blob_container_client.rs
@@ -201,8 +201,8 @@ impl BlobContainerClient {
     /// * `options` - Optional parameters for the request.
     pub async fn change_lease(
         &self,
-        lease_id: &str,
-        proposed_lease_id: &str,
+        lease_id: String,
+        proposed_lease_id: String,
         options: Option<BlobContainerClientChangeLeaseOptions<'_>>,
     ) -> Result<Response<BlobContainerClientChangeLeaseResult>> {
         let options = options.unwrap_or_default();
@@ -232,8 +232,8 @@ impl BlobContainerClient {
         if let Some(client_request_id) = options.client_request_id {
             request.insert_header("x-ms-client-request-id", client_request_id);
         }
-        request.insert_header("x-ms-lease-id", lease_id.to_owned());
-        request.insert_header("x-ms-proposed-lease-id", proposed_lease_id.to_owned());
+        request.insert_header("x-ms-lease-id", lease_id);
+        request.insert_header("x-ms-proposed-lease-id", proposed_lease_id);
         request.insert_header("x-ms-version", &self.version);
         self.pipeline.send(&ctx, &mut request).await
     }
@@ -604,7 +604,7 @@ impl BlobContainerClient {
     /// * `options` - Optional parameters for the request.
     pub async fn release_lease(
         &self,
-        lease_id: &str,
+        lease_id: String,
         options: Option<BlobContainerClientReleaseLeaseOptions<'_>>,
     ) -> Result<Response<BlobContainerClientReleaseLeaseResult>> {
         let options = options.unwrap_or_default();
@@ -634,7 +634,7 @@ impl BlobContainerClient {
         if let Some(client_request_id) = options.client_request_id {
             request.insert_header("x-ms-client-request-id", client_request_id);
         }
-        request.insert_header("x-ms-lease-id", lease_id.to_owned());
+        request.insert_header("x-ms-lease-id", lease_id);
         request.insert_header("x-ms-version", &self.version);
         self.pipeline.send(&ctx, &mut request).await
     }
@@ -647,7 +647,7 @@ impl BlobContainerClient {
     /// * `options` - Optional parameters for the request.
     pub async fn rename(
         &self,
-        source_container_name: &str,
+        source_container_name: String,
         options: Option<BlobContainerClientRenameOptions<'_>>,
     ) -> Result<Response<BlobContainerClientRenameResult>> {
         let options = options.unwrap_or_default();
@@ -667,10 +667,7 @@ impl BlobContainerClient {
         if let Some(client_request_id) = options.client_request_id {
             request.insert_header("x-ms-client-request-id", client_request_id);
         }
-        request.insert_header(
-            "x-ms-source-container-name",
-            source_container_name.to_owned(),
-        );
+        request.insert_header("x-ms-source-container-name", source_container_name);
         if let Some(source_lease_id) = options.source_lease_id {
             request.insert_header("x-ms-source-lease-id", source_lease_id);
         }
@@ -687,7 +684,7 @@ impl BlobContainerClient {
     /// * `options` - Optional parameters for the request.
     pub async fn renew_lease(
         &self,
-        lease_id: &str,
+        lease_id: String,
         options: Option<BlobContainerClientRenewLeaseOptions<'_>>,
     ) -> Result<Response<BlobContainerClientRenewLeaseResult>> {
         let options = options.unwrap_or_default();
@@ -717,7 +714,7 @@ impl BlobContainerClient {
         if let Some(client_request_id) = options.client_request_id {
             request.insert_header("x-ms-client-request-id", client_request_id);
         }
-        request.insert_header("x-ms-lease-id", lease_id.to_owned());
+        request.insert_header("x-ms-lease-id", lease_id);
         request.insert_header("x-ms-version", &self.version);
         self.pipeline.send(&ctx, &mut request).await
     }
diff --git a/sdk/storage/azure_storage_blob/src/generated/clients/blob_service_client.rs b/sdk/storage/azure_storage_blob/src/generated/clients/blob_service_client.rs
index 88d41aded01..f96f1fdc611 100644
--- a/sdk/storage/azure_storage_blob/src/generated/clients/blob_service_client.rs
+++ b/sdk/storage/azure_storage_blob/src/generated/clients/blob_service_client.rs
@@ -245,8 +245,8 @@ impl BlobServiceClient {
     /// * `options` - Optional parameters for the request.
     pub async fn get_user_delegation_key(
         &self,
-        start: &str,
-        expiry: &str,
+        start: String,
+        expiry: String,
         options: Option<BlobServiceClientGetUserDelegationKeyOptions<'_>>,
     ) -> Result<Response<UserDelegationKey>> {
         let options = options.unwrap_or_default();
@@ -266,11 +266,8 @@ impl BlobServiceClient {
             request.insert_header("x-ms-client-request-id", client_request_id);
         }
         request.insert_header("x-ms-version", &self.version);
-        let body: RequestContent<GetUserDelegationKeyRequest> = GetUserDelegationKeyRequest {
-            start: start.to_owned(),
-            expiry: expiry.to_owned(),
-        }
-        .try_into()?;
+        let body: RequestContent<GetUserDelegationKeyRequest> =
+            GetUserDelegationKeyRequest { start, expiry }.try_into()?;
         request.set_body(body);
         self.pipeline.send(&ctx, &mut request).await
     }
diff --git a/sdk/storage/azure_storage_blob/src/generated/clients/block_blob_client.rs b/sdk/storage/azure_storage_blob/src/generated/clients/block_blob_client.rs
index 28051e98a88..1099b1e3c78 100644
--- a/sdk/storage/azure_storage_blob/src/generated/clients/block_blob_client.rs
+++ b/sdk/storage/azure_storage_blob/src/generated/clients/block_blob_client.rs
@@ -278,7 +278,7 @@ impl BlockBlobClient {
     pub async fn put_blob_from_url(
         &self,
         content_length: u64,
-        copy_source: &str,
+        copy_source: String,
         options: Option<BlockBlobClientPutBlobFromUrlOptions<'_>>,
     ) -> Result<Response<BlockBlobClientPutBlobFromUrlResult>> {
         let options = options.unwrap_or_default();
@@ -342,7 +342,7 @@ impl BlockBlobClient {
         if let Some(client_request_id) = options.client_request_id {
             request.insert_header("x-ms-client-request-id", client_request_id);
         }
-        request.insert_header("x-ms-copy-source", copy_source.to_owned());
+        request.insert_header("x-ms-copy-source", copy_source);
         if let Some(copy_source_authorization) = options.copy_source_authorization {
             request.insert_header("x-ms-copy-source-authorization", copy_source_authorization);
         }
@@ -494,7 +494,7 @@ impl BlockBlobClient {
     /// * `options` - Optional parameters for the request.
     pub async fn stage_block(
         &self,
-        block_id: Vec<u8>,
+        block_id: &[u8],
         content_length: u64,
         body: RequestContent<Bytes>,
         options: Option<BlockBlobClientStageBlockOptions<'_>>,
@@ -562,9 +562,9 @@ impl BlockBlobClient {
     /// * `options` - Optional parameters for the request.
     pub async fn stage_block_from_url(
         &self,
-        block_id: Vec<u8>,
+        block_id: &[u8],
         content_length: u64,
-        source_url: &str,
+        source_url: String,
         options: Option<BlockBlobClientStageBlockFromUrlOptions<'_>>,
     ) -> Result<Response<BlockBlobClientStageBlockFromUrlResult>> {
         let options = options.unwrap_or_default();
@@ -590,7 +590,7 @@ impl BlockBlobClient {
         if let Some(client_request_id) = options.client_request_id {
             request.insert_header("x-ms-client-request-id", client_request_id);
         }
-        request.insert_header("x-ms-copy-source", source_url.to_owned());
+        request.insert_header("x-ms-copy-source", source_url);
         if let Some(copy_source_authorization) = options.copy_source_authorization {
             request.insert_header("x-ms-copy-source-authorization", copy_source_authorization);
         }
diff --git a/sdk/storage/azure_storage_blob/src/generated/clients/page_blob_client.rs b/sdk/storage/azure_storage_blob/src/generated/clients/page_blob_client.rs
index 0c485e9785c..02c8bb9a83a 100644
--- a/sdk/storage/azure_storage_blob/src/generated/clients/page_blob_client.rs
+++ b/sdk/storage/azure_storage_blob/src/generated/clients/page_blob_client.rs
@@ -203,7 +203,7 @@ impl PageBlobClient {
     /// * `options` - Optional parameters for the request.
     pub async fn copy_incremental(
         &self,
-        copy_source: &str,
+        copy_source: String,
         options: Option<PageBlobClientCopyIncrementalOptions<'_>>,
     ) -> Result<Response<PageBlobClientCopyIncrementalResult>> {
         let options = options.unwrap_or_default();
@@ -239,7 +239,7 @@ impl PageBlobClient {
         if let Some(client_request_id) = options.client_request_id {
             request.insert_header("x-ms-client-request-id", client_request_id);
         }
-        request.insert_header("x-ms-copy-source", copy_source.to_owned());
+        request.insert_header("x-ms-copy-source", copy_source);
         if let Some(if_tags) = options.if_tags {
             request.insert_header("x-ms-if-tags", if_tags);
         }
@@ -778,10 +778,10 @@ impl PageBlobClient {
     /// * `options` - Optional parameters for the request.
     pub async fn upload_pages_from_url(
         &self,
-        source_url: &str,
-        source_range: &str,
+        source_url: String,
+        source_range: String,
         content_length: u64,
-        range: &str,
+        range: String,
         options: Option<PageBlobClientUploadPagesFromUrlOptions<'_>>,
     ) -> Result<Response<PageBlobClientUploadPagesFromUrlResult>> {
         let options = options.unwrap_or_default();
@@ -821,7 +821,7 @@ impl PageBlobClient {
         if let Some(client_request_id) = options.client_request_id {
             request.insert_header("x-ms-client-request-id", client_request_id);
         }
-        request.insert_header("x-ms-copy-source", source_url.to_owned());
+        request.insert_header("x-ms-copy-source", source_url);
         if let Some(copy_source_authorization) = options.copy_source_authorization {
             request.insert_header("x-ms-copy-source-authorization", copy_source_authorization);
         }
@@ -866,7 +866,7 @@ impl PageBlobClient {
         if let Some(lease_id) = options.lease_id {
             request.insert_header("x-ms-lease-id", lease_id);
         }
-        request.insert_header("x-ms-range", range.to_owned());
+        request.insert_header("x-ms-range", range);
         if let Some(source_content_crc64) = options.source_content_crc64 {
             request.insert_header(
                 "x-ms-source-content-crc64",
@@ -894,7 +894,7 @@ impl PageBlobClient {
                 date::to_rfc7231(&source_if_unmodified_since),
             );
         }
-        request.insert_header("x-ms-source-range", source_range.to_owned());
+        request.insert_header("x-ms-source-range", source_range);
         request.insert_header("x-ms-version", &self.version);
         self.pipeline.send(&ctx, &mut request).await
     }
diff --git a/sdk/storage/azure_storage_blob/src/generated/models/crate_models.rs b/sdk/storage/azure_storage_blob/src/generated/models/crate_models.rs
index be573ee75df..f2638eeadab 100644
--- a/sdk/storage/azure_storage_blob/src/generated/models/crate_models.rs
+++ b/sdk/storage/azure_storage_blob/src/generated/models/crate_models.rs
@@ -29,9 +29,10 @@ pub(crate) struct SetPropertiesRequest {
         default,
         deserialize_with = "CorsCorsRule::unwrap",
         rename = "Cors",
-        serialize_with = "CorsCorsRule::wrap"
+        serialize_with = "CorsCorsRule::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub(crate) cors: Vec<CorsRule>,
+    pub(crate) cors: Option<Vec<CorsRule>>,
 
     /// The default service version.
     #[serde(
diff --git a/sdk/storage/azure_storage_blob/src/generated/models/method_options.rs b/sdk/storage/azure_storage_blob/src/generated/models/method_options.rs
index ee66fefe840..8ae7e61e185 100644
--- a/sdk/storage/azure_storage_blob/src/generated/models/method_options.rs
+++ b/sdk/storage/azure_storage_blob/src/generated/models/method_options.rs
@@ -1616,7 +1616,7 @@ pub struct BlobServiceClientSetPropertiesOptions<'a> {
     pub client_request_id: Option<String>,
 
     /// The CORS properties.
-    pub cors: Vec<CorsRule>,
+    pub cors: Option<Vec<CorsRule>>,
 
     /// The default service version.
     pub default_service_version: Option<String>,
diff --git a/sdk/storage/azure_storage_blob/src/generated/models/models_serde.rs b/sdk/storage/azure_storage_blob/src/generated/models/models_serde.rs
index fdc9824cf76..1a67b79a642 100644
--- a/sdk/storage/azure_storage_blob/src/generated/models/models_serde.rs
+++ b/sdk/storage/azure_storage_blob/src/generated/models/models_serde.rs
@@ -27,13 +27,13 @@ impl TryFrom<QueryRequest> for RequestContent<QueryRequest> {
     }
 }
 
-pub mod vec_encoded_bytes_std {
+pub mod option_vec_encoded_bytes_std {
     #![allow(clippy::type_complexity)]
     use azure_core::base64;
     use serde::{Deserialize, Deserializer, Serialize, Serializer};
     use std::result::Result;
 
-    pub fn deserialize<'de, D>(deserializer: D) -> Result<Vec<Vec<u8>>, D::Error>
+    pub fn deserialize<'de, D>(deserializer: D) -> Result<Option<Vec<Vec<u8>>>, D::Error>
     where
         D: Deserializer<'de>,
     {
@@ -44,17 +44,24 @@ pub mod vec_encoded_bytes_std {
                 for v in to_deserialize {
                     decoded0.push(base64::decode(v).map_err(serde::de::Error::custom)?);
                 }
-                Ok(decoded0)
+                Ok(Some(decoded0))
             }
-            None => Ok(<Vec<Vec<u8>>>::default()),
+            None => Ok(None),
         }
     }
 
-    pub fn serialize<S>(to_serialize: &[Vec<u8>], serializer: S) -> Result<S::Ok, S::Error>
+    pub fn serialize<S>(
+        to_serialize: &Option<Vec<Vec<u8>>>,
+        serializer: S,
+    ) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
-        let encoded0 = to_serialize.iter().map(base64::encode).collect();
-        <Vec<String>>::serialize(&encoded0, serializer)
+        if let Some(to_serialize) = to_serialize {
+            let encoded0 = to_serialize.iter().map(base64::encode).collect();
+            <Option<Vec<String>>>::serialize(&Some(encoded0), serializer)
+        } else {
+            serializer.serialize_none()
+        }
     }
 }
diff --git a/sdk/storage/azure_storage_blob/src/generated/models/pub_models.rs b/sdk/storage/azure_storage_blob/src/generated/models/pub_models.rs
index bafb377f494..4a4403d42d4 100644
--- a/sdk/storage/azure_storage_blob/src/generated/models/pub_models.rs
+++ b/sdk/storage/azure_storage_blob/src/generated/models/pub_models.rs
@@ -6,10 +6,9 @@
 use super::{
     models_serde,
     xml_helpers::{
-        Blob_itemsBlobItemInternal, Blob_prefixesBlobPrefix, Blob_tag_setBlobTag,
-        BlobsFilterBlobItem, Clear_rangeClearRange, Committed_blocksBlock,
-        Container_itemsContainerItem, CorsCorsRule, Page_rangePageRange, SchemaArrowField,
-        Uncommitted_blocksBlock,
+        Blob_itemsBlob, Blob_prefixesBlobPrefix, Blob_tag_setTag, BlobsBlob, Clear_rangeClearRange,
+        Committed_blocksBlock, Container_itemsContainer, CorsCorsRule, Page_rangePageRange,
+        SchemaField, Uncommitted_blocksBlock,
     },
     AccessTier, ArchiveStatus, BlobImmutabilityPolicyMode, BlobType, CopyStatus,
     GeoReplicationStatusType, LeaseDuration, LeaseState, LeaseStatus, PublicAccessType,
@@ -70,11 +69,12 @@ pub struct ArrowConfiguration {
     /// The Apache Arrow schema
     #[serde(
         default,
-        deserialize_with = "SchemaArrowField::unwrap",
+        deserialize_with = "SchemaField::unwrap",
         rename = "Schema",
-        serialize_with = "SchemaArrowField::wrap"
+        serialize_with = "SchemaField::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub schema: Vec<ArrowField>,
+    pub schema: Option<Vec<ArrowField>>,
 }
 
 /// Represents an Apache Arrow field.
@@ -220,11 +220,12 @@ pub struct BlobFlatListSegment {
     /// The blob items.
     #[serde(
         default,
-        deserialize_with = "Blob_itemsBlobItemInternal::unwrap",
+        deserialize_with = "Blob_itemsBlob::unwrap",
         rename = "BlobItems",
-        serialize_with = "Blob_itemsBlobItemInternal::wrap"
+        serialize_with = "Blob_itemsBlob::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub blob_items: Vec<BlobItemInternal>,
+    pub blob_items: Option<Vec<BlobItemInternal>>,
 }
 
 /// Represents an array of blobs.
@@ -236,20 +237,22 @@ pub struct BlobHierarchyListSegment {
     /// The blob items
     #[serde(
         default,
-        deserialize_with = "Blob_itemsBlobItemInternal::unwrap",
+        deserialize_with = "Blob_itemsBlob::unwrap",
         rename = "BlobItems",
-        serialize_with = "Blob_itemsBlobItemInternal::wrap"
+        serialize_with = "Blob_itemsBlob::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub blob_items: Vec<BlobItemInternal>,
+    pub blob_items: Option<Vec<BlobItemInternal>>,
 
     /// The blob prefixes.
     #[serde(
         default,
         deserialize_with = "Blob_prefixesBlobPrefix::unwrap",
         rename = "BlobPrefixes",
-        serialize_with = "Blob_prefixesBlobPrefix::wrap"
+        serialize_with = "Blob_prefixesBlobPrefix::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub blob_prefixes: Vec<BlobPrefix>,
+    pub blob_prefixes: Option<Vec<BlobPrefix>>,
 }
 
 /// An Azure Storage Blob
@@ -596,11 +599,12 @@ pub struct BlobTags {
     /// Represents the blob tags.
     #[serde(
         default,
-        deserialize_with = "Blob_tag_setBlobTag::unwrap",
+        deserialize_with = "Blob_tag_setTag::unwrap",
         rename = "TagSet",
-        serialize_with = "Blob_tag_setBlobTag::wrap"
+        serialize_with = "Blob_tag_setTag::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub blob_tag_set: Vec<BlobTag>,
+    pub blob_tag_set: Option<Vec<BlobTag>>,
 }
 
 /// Represents a single block in a block blob. It describes the block's ID and size.
@@ -657,18 +661,20 @@ pub struct BlockList {
         default,
         deserialize_with = "Committed_blocksBlock::unwrap",
         rename = "CommittedBlocks",
-        serialize_with = "Committed_blocksBlock::wrap"
+        serialize_with = "Committed_blocksBlock::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub committed_blocks: Vec<Block>,
+    pub committed_blocks: Option<Vec<Block>>,
 
     /// The list of uncommitted blocks.
     #[serde(
         default,
         deserialize_with = "Uncommitted_blocksBlock::unwrap",
         rename = "UncommittedBlocks",
-        serialize_with = "Uncommitted_blocksBlock::wrap"
+        serialize_with = "Uncommitted_blocksBlock::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub uncommitted_blocks: Vec<Block>,
+    pub uncommitted_blocks: Option<Vec<Block>>,
 }
 
 /// The Block lookup list.
@@ -680,28 +686,28 @@ pub struct BlockLookupList {
     #[serde(
         default,
         rename = "Committed",
-        skip_serializing_if = "Vec::is_empty",
-        with = "models_serde::vec_encoded_bytes_std"
+        skip_serializing_if = "Option::is_none",
+        with = "models_serde::option_vec_encoded_bytes_std"
     )]
-    pub committed: Vec<Vec<u8>>,
+    pub committed: Option<Vec<Vec<u8>>>,
 
     /// The latest blocks
     #[serde(
         default,
         rename = "Latest",
-        skip_serializing_if = "Vec::is_empty",
-        with = "models_serde::vec_encoded_bytes_std"
+        skip_serializing_if = "Option::is_none",
+        with = "models_serde::option_vec_encoded_bytes_std"
     )]
-    pub latest: Vec<Vec<u8>>,
+    pub latest: Option<Vec<Vec<u8>>>,
 
     /// The uncommitted blocks
     #[serde(
         default,
         rename = "Uncommitted",
-        skip_serializing_if = "Vec::is_empty",
-        with = "models_serde::vec_encoded_bytes_std"
+        skip_serializing_if = "Option::is_none",
+        with = "models_serde::option_vec_encoded_bytes_std"
     )]
-    pub uncommitted: Vec<Vec<u8>>,
+    pub uncommitted: Option<Vec<Vec<u8>>>,
 }
 
 /// The clear range.
@@ -729,12 +735,8 @@ pub struct ContainerItem {
     pub delete: Option<bool>,
 
     /// The metadata of the container.
-    #[serde(
-        default,
-        rename = "Metadata",
-        skip_serializing_if = "HashMap::is_empty"
-    )]
-    pub metadata: HashMap<String, String>,
+    #[serde(rename = "Metadata", skip_serializing_if = "Option::is_none")]
+    pub metadata: Option<HashMap<String, String>>,
 
     /// The name of the container.
     #[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
@@ -920,11 +922,12 @@ pub struct FilterBlobSegment {
     /// The blob segment.
     #[serde(
         default,
-        deserialize_with = "BlobsFilterBlobItem::unwrap",
+        deserialize_with = "BlobsBlob::unwrap",
         rename = "Blobs",
-        serialize_with = "BlobsFilterBlobItem::wrap"
+        serialize_with = "BlobsBlob::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub blobs: Vec<FilterBlobItem>,
+    pub blobs: Option<Vec<FilterBlobItem>>,
 
     /// The next marker of the blobs.
     #[serde(rename = "NextMarker", skip_serializing_if = "Option::is_none")]
@@ -1051,11 +1054,12 @@ pub struct ListContainersSegmentResponse {
     /// The container segment.
     #[serde(
         default,
-        deserialize_with = "Container_itemsContainerItem::unwrap",
+        deserialize_with = "Container_itemsContainer::unwrap",
         rename = "Containers",
-        serialize_with = "Container_itemsContainerItem::wrap"
+        serialize_with = "Container_itemsContainer::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub container_items: Vec<ContainerItem>,
+    pub container_items: Option<Vec<ContainerItem>>,
 
     /// The marker of the containers.
     #[serde(rename = "Marker", skip_serializing_if = "Option::is_none")]
@@ -1169,9 +1173,10 @@ pub struct PageList {
         default,
         deserialize_with = "Clear_rangeClearRange::unwrap",
         rename = "ClearRange",
-        serialize_with = "Clear_rangeClearRange::wrap"
+        serialize_with = "Clear_rangeClearRange::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub clear_range: Vec<ClearRange>,
+    pub clear_range: Option<Vec<ClearRange>>,
 
     /// The next marker.
     #[serde(rename = "NextMarker", skip_serializing_if = "Option::is_none")]
@@ -1182,9 +1187,10 @@ pub struct PageList {
         default,
         deserialize_with = "Page_rangePageRange::unwrap",
         rename = "PageRange",
-        serialize_with = "Page_rangePageRange::wrap"
+        serialize_with = "Page_rangePageRange::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub page_range: Vec<PageRange>,
+    pub page_range: Option<Vec<PageRange>>,
 }
 
 /// The page range.
@@ -1344,9 +1350,10 @@ pub struct StorageServiceProperties {
         default,
         deserialize_with = "CorsCorsRule::unwrap",
         rename = "Cors",
-        serialize_with = "CorsCorsRule::wrap"
+        serialize_with = "CorsCorsRule::wrap",
+        skip_serializing_if = "Option::is_none"
     )]
-    pub cors: Vec<CorsRule>,
+    pub cors: Option<Vec<CorsRule>>,
 
     /// The default service version.
     #[serde(
diff --git a/sdk/storage/azure_storage_blob/src/generated/models/xml_helpers.rs b/sdk/storage/azure_storage_blob/src/generated/models/xml_helpers.rs
index e749e2be615..af85d4a1159 100644
--- a/sdk/storage/azure_storage_blob/src/generated/models/xml_helpers.rs
+++ b/sdk/storage/azure_storage_blob/src/generated/models/xml_helpers.rs
@@ -14,25 +14,28 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer};
 
 #[derive(Deserialize, Serialize)]
 #[serde(rename = "BlobItems")]
-pub(crate) struct Blob_itemsBlobItemInternal {
+pub(crate) struct Blob_itemsBlob {
     #[serde(default)]
-    BlobItemInternal: Vec<BlobItemInternal>,
+    Blob: Option<Vec<BlobItemInternal>>,
 }
 
-impl Blob_itemsBlobItemInternal {
-    pub fn unwrap<'de, D>(deserializer: D) -> Result<Vec<BlobItemInternal>, D::Error>
+impl Blob_itemsBlob {
+    pub fn unwrap<'de, D>(deserializer: D) -> Result<Option<Vec<BlobItemInternal>>, D::Error>
     where
         D: Deserializer<'de>,
     {
-        Ok(Blob_itemsBlobItemInternal::deserialize(deserializer)?.BlobItemInternal)
+        Ok(Blob_itemsBlob::deserialize(deserializer)?.Blob)
     }
 
-    pub fn wrap<S>(to_serialize: &Vec<BlobItemInternal>, serializer: S) -> Result<S::Ok, S::Error>
+    pub fn wrap<S>(
+        to_serialize: &Option<Vec<BlobItemInternal>>,
+        serializer: S,
+    ) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
-        Blob_itemsBlobItemInternal {
-            BlobItemInternal: to_serialize.to_owned(),
+        Blob_itemsBlob {
+            Blob: to_serialize.to_owned(),
         }
         .serialize(serializer)
     }
@@ -42,18 +45,18 @@ impl Blob_itemsBlobItemInternal {
 #[serde(rename = "BlobPrefixes")]
 pub(crate) struct Blob_prefixesBlobPrefix {
     #[serde(default)]
-    BlobPrefix: Vec<BlobPrefix>,
+    BlobPrefix: Option<Vec<BlobPrefix>>,
 }
 
 impl Blob_prefixesBlobPrefix {
-    pub fn unwrap<'de, D>(deserializer: D) -> Result<Vec<BlobPrefix>, D::Error>
+    pub fn unwrap<'de, D>(deserializer: D) -> Result<Option<Vec<BlobPrefix>>, D::Error>
     where
         D: Deserializer<'de>,
     {
         Ok(Blob_prefixesBlobPrefix::deserialize(deserializer)?.BlobPrefix)
     }
 
-    pub fn wrap<S>(to_serialize: &Vec<BlobPrefix>, serializer: S) -> Result<S::Ok, S::Error>
+    pub fn wrap<S>(to_serialize: &Option<Vec<BlobPrefix>>, serializer: S) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
@@ -66,25 +69,25 @@ impl Blob_prefixesBlobPrefix {
 
 #[derive(Deserialize, Serialize)]
 #[serde(rename = "TagSet")]
-pub(crate) struct Blob_tag_setBlobTag {
+pub(crate) struct Blob_tag_setTag {
     #[serde(default)]
-    BlobTag: Vec<BlobTag>,
+    Tag: Option<Vec<BlobTag>>,
 }
 
-impl Blob_tag_setBlobTag {
-    pub fn unwrap<'de, D>(deserializer: D) -> Result<Vec<BlobTag>, D::Error>
+impl Blob_tag_setTag {
+    pub fn unwrap<'de, D>(deserializer: D) -> Result<Option<Vec<BlobTag>>, D::Error>
     where
         D: Deserializer<'de>,
     {
-        Ok(Blob_tag_setBlobTag::deserialize(deserializer)?.BlobTag)
+        Ok(Blob_tag_setTag::deserialize(deserializer)?.Tag)
     }
 
-    pub fn wrap<S>(to_serialize: &Vec<BlobTag>, serializer: S) -> Result<S::Ok, S::Error>
+    pub fn wrap<S>(to_serialize: &Option<Vec<BlobTag>>, serializer: S) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
-        Blob_tag_setBlobTag {
-            BlobTag: to_serialize.to_owned(),
+        Blob_tag_setTag {
+            Tag: to_serialize.to_owned(),
         }
         .serialize(serializer)
     }
@@ -92,25 +95,28 @@ impl Blob_tag_setBlobTag {
 
 #[derive(Deserialize, Serialize)]
 #[serde(rename = "Blobs")]
-pub(crate) struct BlobsFilterBlobItem {
+pub(crate) struct BlobsBlob {
     #[serde(default)]
-    FilterBlobItem: Vec<FilterBlobItem>,
+    Blob: Option<Vec<FilterBlobItem>>,
 }
 
-impl BlobsFilterBlobItem {
-    pub fn unwrap<'de, D>(deserializer: D) -> Result<Vec<FilterBlobItem>, D::Error>
+impl BlobsBlob {
+    pub fn unwrap<'de, D>(deserializer: D) -> Result<Option<Vec<FilterBlobItem>>, D::Error>
     where
         D: Deserializer<'de>,
     {
-        Ok(BlobsFilterBlobItem::deserialize(deserializer)?.FilterBlobItem)
+        Ok(BlobsBlob::deserialize(deserializer)?.Blob)
     }
 
-    pub fn wrap<S>(to_serialize: &Vec<FilterBlobItem>, serializer: S) -> Result<S::Ok, S::Error>
+    pub fn wrap<S>(
+        to_serialize: &Option<Vec<FilterBlobItem>>,
+        serializer: S,
+    ) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
-        BlobsFilterBlobItem {
-            FilterBlobItem: to_serialize.to_owned(),
+        BlobsBlob {
+            Blob: to_serialize.to_owned(),
         }
         .serialize(serializer)
     }
@@ -120,18 +126,18 @@ impl BlobsFilterBlobItem {
 #[serde(rename = "ClearRange")]
 pub(crate) struct Clear_rangeClearRange {
     #[serde(default)]
-    ClearRange: Vec<ClearRange>,
+    ClearRange: Option<Vec<ClearRange>>,
 }
 
 impl Clear_rangeClearRange {
-    pub fn unwrap<'de, D>(deserializer: D) -> Result<Vec<ClearRange>, D::Error>
+    pub fn unwrap<'de, D>(deserializer: D) -> Result<Option<Vec<ClearRange>>, D::Error>
     where
         D: Deserializer<'de>,
     {
         Ok(Clear_rangeClearRange::deserialize(deserializer)?.ClearRange)
     }
 
-    pub fn wrap<S>(to_serialize: &Vec<ClearRange>, serializer: S) -> Result<S::Ok, S::Error>
+    pub fn wrap<S>(to_serialize: &Option<Vec<ClearRange>>, serializer: S) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
@@ -146,18 +152,18 @@ impl Clear_rangeClearRange {
 #[serde(rename = "CommittedBlocks")]
 pub(crate) struct Committed_blocksBlock {
     #[serde(default)]
-    Block: Vec<Block>,
+    Block: Option<Vec<Block>>,
 }
 
 impl Committed_blocksBlock {
-    pub fn unwrap<'de, D>(deserializer: D) -> Result<Vec<Block>, D::Error>
+    pub fn unwrap<'de, D>(deserializer: D) -> Result<Option<Vec<Block>>, D::Error>
     where
         D: Deserializer<'de>,
     {
         Ok(Committed_blocksBlock::deserialize(deserializer)?.Block)
     }
 
-    pub fn wrap<S>(to_serialize: &Vec<Block>, serializer: S) -> Result<S::Ok, S::Error>
+    pub fn wrap<S>(to_serialize: &Option<Vec<Block>>, serializer: S) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
@@ -170,25 +176,28 @@ impl Committed_blocksBlock {
 
 #[derive(Deserialize, Serialize)]
 #[serde(rename = "Containers")]
-pub(crate) struct Container_itemsContainerItem {
+pub(crate) struct Container_itemsContainer {
     #[serde(default)]
-    ContainerItem: Vec<ContainerItem>,
+    Container: Option<Vec<ContainerItem>>,
 }
 
-impl Container_itemsContainerItem {
-    pub fn unwrap<'de, D>(deserializer: D) -> Result<Vec<ContainerItem>, D::Error>
+impl Container_itemsContainer {
+    pub fn unwrap<'de, D>(deserializer: D) -> Result<Option<Vec<ContainerItem>>, D::Error>
     where
         D: Deserializer<'de>,
     {
-        Ok(Container_itemsContainerItem::deserialize(deserializer)?.ContainerItem)
+        Ok(Container_itemsContainer::deserialize(deserializer)?.Container)
     }
 
-    pub fn wrap<S>(to_serialize: &Vec<ContainerItem>, serializer: S) -> Result<S::Ok, S::Error>
+    pub fn wrap<S>(
+        to_serialize: &Option<Vec<ContainerItem>>,
+        serializer: S,
+    ) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
-        Container_itemsContainerItem {
-            ContainerItem: to_serialize.to_owned(),
+        Container_itemsContainer {
+            Container: to_serialize.to_owned(),
         }
         .serialize(serializer)
     }
@@ -198,18 +207,18 @@ impl Container_itemsContainerItem {
 #[serde(rename = "Cors")]
 pub(crate) struct CorsCorsRule {
     #[serde(default)]
-    CorsRule: Vec<CorsRule>,
+    CorsRule: Option<Vec<CorsRule>>,
 }
 
 impl CorsCorsRule {
-    pub fn unwrap<'de, D>(deserializer: D) -> Result<Vec<CorsRule>, D::Error>
+    pub fn unwrap<'de, D>(deserializer: D) -> Result<Option<Vec<CorsRule>>, D::Error>
     where
         D: Deserializer<'de>,
     {
         Ok(CorsCorsRule::deserialize(deserializer)?.CorsRule)
     }
 
-    pub fn wrap<S>(to_serialize: &Vec<CorsRule>, serializer: S) -> Result<S::Ok, S::Error>
+    pub fn wrap<S>(to_serialize: &Option<Vec<CorsRule>>, serializer: S) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
@@ -224,18 +233,18 @@ impl CorsCorsRule {
 #[serde(rename = "PageRange")]
 pub(crate) struct Page_rangePageRange {
     #[serde(default)]
-    PageRange: Vec<PageRange>,
+    PageRange: Option<Vec<PageRange>>,
 }
 
 impl Page_rangePageRange {
-    pub fn unwrap<'de, D>(deserializer: D) -> Result<Vec<PageRange>, D::Error>
+    pub fn unwrap<'de, D>(deserializer: D) -> Result<Option<Vec<PageRange>>, D::Error>
     where
         D: Deserializer<'de>,
     {
         Ok(Page_rangePageRange::deserialize(deserializer)?.PageRange)
     }
 
-    pub fn wrap<S>(to_serialize: &Vec<PageRange>, serializer: S) -> Result<S::Ok, S::Error>
+    pub fn wrap<S>(to_serialize: &Option<Vec<PageRange>>, serializer: S) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
@@ -248,25 +257,25 @@ impl Page_rangePageRange {
 
 #[derive(Deserialize, Serialize)]
 #[serde(rename = "Schema")]
-pub(crate) struct SchemaArrowField {
+pub(crate) struct SchemaField {
     #[serde(default)]
-    ArrowField: Vec<ArrowField>,
+    Field: Option<Vec<ArrowField>>,
 }
 
-impl SchemaArrowField {
-    pub fn unwrap<'de, D>(deserializer: D) -> Result<Vec<ArrowField>, D::Error>
+impl SchemaField {
+    pub fn unwrap<'de, D>(deserializer: D) -> Result<Option<Vec<ArrowField>>, D::Error>
     where
         D: Deserializer<'de>,
     {
-        Ok(SchemaArrowField::deserialize(deserializer)?.ArrowField)
+        Ok(SchemaField::deserialize(deserializer)?.Field)
     }
 
-    pub fn wrap<S>(to_serialize: &Vec<ArrowField>, serializer: S) -> Result<S::Ok, S::Error>
+    pub fn wrap<S>(to_serialize: &Option<Vec<ArrowField>>, serializer: S) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
-        SchemaArrowField {
-            ArrowField: to_serialize.to_owned(),
+        SchemaField {
+            Field: to_serialize.to_owned(),
         }
         .serialize(serializer)
     }
@@ -276,18 +285,18 @@ impl SchemaArrowField {
 #[serde(rename = "UncommittedBlocks")]
 pub(crate) struct Uncommitted_blocksBlock {
     #[serde(default)]
-    Block: Vec<Block>,
+    Block: Option<Vec<Block>>,
 }
 
 impl Uncommitted_blocksBlock {
-    pub fn unwrap<'de, D>(deserializer: D) -> Result<Vec<Block>, D::Error>
+    pub fn unwrap<'de, D>(deserializer: D) -> Result<Option<Vec<Block>>, D::Error>
     where
         D: Deserializer<'de>,
     {
         Ok(Uncommitted_blocksBlock::deserialize(deserializer)?.Block)
     }
 
-    pub fn wrap<S>(to_serialize: &Vec<Block>, serializer: S) -> Result<S::Ok, S::Error>
+    pub fn wrap<S>(to_serialize: &Option<Vec<Block>>, serializer: S) -> Result<S::Ok, S::Error>
     where
         S: Serializer,
     {
diff --git a/sdk/storage/azure_storage_blob/tests/block_blob_client.rs b/sdk/storage/azure_storage_blob/tests/block_blob_client.rs
index 0a72c5ca84e..aee899d9a6f 100644
--- a/sdk/storage/azure_storage_blob/tests/block_blob_client.rs
+++ b/sdk/storage/azure_storage_blob/tests/block_blob_client.rs
@@ -25,7 +25,7 @@ async fn test_block_list(ctx: TestContext) -> Result<(), Box<dyn Error>> {
 
     block_blob_client
         .stage_block(
-            block_1_id.clone(),
+            &block_1_id,
             u64::try_from(block_1.len())?,
             RequestContent::from(block_1.to_vec()),
             None,
@@ -34,7 +34,7 @@ async fn test_block_list(ctx: TestContext) -> Result<(), Box<dyn Error>> {
 
     block_blob_client
         .stage_block(
-            block_2_id.clone(),
+            &block_2_id,
             u64::try_from(block_2.len())?,
             RequestContent::from(block_2.to_vec()),
             None,
@@ -42,7 +42,7 @@ async fn test_block_list(ctx: TestContext) -> Result<(), Box<dyn Error>> {
         .await?;
     block_blob_client
         .stage_block(
-            block_3_id.clone(),
+            &block_3_id,
             u64::try_from(block_3.len())?,
             RequestContent::from(block_3.to_vec()),
             None,
@@ -57,15 +57,21 @@ async fn test_block_list(ctx: TestContext) -> Result<(), Box<dyn Error>> {
         .await?;
 
     // Assert
-    assert_eq!(0, block_list.committed_blocks.len());
-    assert_eq!(3, block_list.uncommitted_blocks.len());
+    assert!(block_list.committed_blocks.is_none());
+    assert_eq!(
+        3,
+        block_list
+            .uncommitted_blocks
+            .expect("expected uncommitted_blocks")
+            .len()
+    );
 
     let latest_blocks: Vec<Vec<u8>> = vec![block_1_id, block_2_id, block_3_id];
 
     let block_lookup_list = BlockLookupList {
-        committed: Vec::new(),
-        latest: latest_blocks,
-        uncommitted: Vec::new(),
+        committed: Some(Vec::new()),
+        latest: Some(latest_blocks),
+        uncommitted: Some(Vec::new()),
     };
 
     let request_content = RequestContent::try_from(block_lookup_list)?;
@@ -91,8 +97,14 @@ async fn test_block_list(ctx: TestContext) -> Result<(), Box<dyn Error>> {
         Bytes::from_static(b"AAABBBCCC"),
         response_body.collect().await?
     );
-    assert_eq!(3, block_list.committed_blocks.len());
-    assert_eq!(0, block_list.uncommitted_blocks.len());
+    assert_eq!(
+        3,
+        block_list
+            .committed_blocks
+            .expect("expected committed_blocks")
+            .len()
+    );
+    assert!(block_list.uncommitted_blocks.is_none());
 
     container_client.delete_container(None).await?;
     Ok(())


Reviews:
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR updates the TypeSpec Rust tooling dependency to version 0.14.0 and adjusts client and test code to match updated API contracts. The changes include updating assertions on optional block lists in blob storage tests, passing block IDs by reference in client calls, and wrapping tags in Option for KeyVault clients and documentation examples.

### Reviewed Changes

Copilot reviewed 26 out of 28 changed files in this pull request and generated 1 comment.

<details>
<summary>Show a summary per file</summary>

| File | Description |
| ---- | ----------- |
| sdk/storage/azure_storage_blob/tests/block_blob_client.rs | Updated test assertions to check for Option types for committed and uncommitted blocks. |
| sdk/storage/azure_storage_blob/src/clients/block_blob_client.rs | Changed stage_block to pass block_id by reference. |
| sdk/keyvault/azure_security_keyvault_secrets/tests/secret_client.rs | Wrapped tags in Some(...) to conform to updated API type. |
| sdk/keyvault/azure_security_keyvault_secrets/README.md | Updated README example to use Option for tags. |
| sdk/keyvault/azure_security_keyvault_keys/tests/key_client.rs | Updated tags wrapping in test to use Option. |
| sdk/keyvault/azure_security_keyvault_keys/README.md | Adjusted README example to wrap tags in Some(...). |
| sdk/keyvault/azure_security_keyvault_certificates/tests/certificate_client.rs | Updated certificate test to wrap tags in Some(...) and adjust optional field checks. |
| sdk/keyvault/azure_security_keyvault_certificates/README.md | Revised example to reflect Option wrapping for tags and key_usage. |
</details>


<details>
<summary>Files not reviewed (2)</summary>

* **eng/emitter-package-lock.json**: Language not supported
* **eng/emitter-package.json**: Language not supported
</details>

<details>
<summary>Comments suppressed due to low confidence (7)</summary>

**sdk/storage/azure_storage_blob/tests/block_blob_client.rs:60**
* The test now checks for None instead of an empty collection for committed_blocks; ensure that the updated API indeed returns None when no blocks exist.
```
assert!(block_list.committed_blocks.is_none());
```
**sdk/keyvault/azure_security_keyvault_secrets/tests/secret_client.rs:82**
* Wrapping tags in Some(...) clarifies the API's optional tagging requirement; verify that this change is consistently applied in all tests.
```
tags: Some(HashMap::from_iter(vec![(
```
**sdk/keyvault/azure_security_keyvault_keys/tests/key_client.rs:86**
* Using Some(HashMap::from_iter(...)) for tags conforms with the updated optional type design; ensure similar updates are propagated across related tests.
```
tags: Some(HashMap::from_iter(vec![(
```
**sdk/keyvault/azure_security_keyvault_certificates/tests/certificate_client.rs:114**
* The update to wrap tags in Some(...) ensures consistency with the API's new optional field for tags in certificate operations.
```
tags: Some(HashMap::from_iter(vec![(
```
**sdk/keyvault/azure_security_keyvault_secrets/README.md:214**
* Updating the README example to wrap tags in Some(...) reflects the revised API design; confirm that the documentation matches the implementation.
```
tags: Some(HashMap::from_iter(vec![(
```
**sdk/keyvault/azure_security_keyvault_keys/README.md:199**
* The README now wraps tags in Some(...), which aligns the example with the updated API; ensure similar consistency across documentation.
```
tags: Some(HashMap::from_iter(vec![(
```
**sdk/keyvault/azure_security_keyvault_certificates/README.md:210**
* Revising the certificate README example to use Option for tags (and key_usage) ensures the documentation correctly reflects the new API expectations.
```
tags: Some(HashMap::from_iter(vec![(
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-01T22:43:13Z
user: login: jhendrixMSFT
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-01T22:47:39Z
user: login: heaths
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-01T22:49:07Z
user: login: jhendrixMSFT
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-01T22:53:21Z
user: login: heaths
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-01T22:54:09Z
user: login: RickWinter
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-02T02:00:23Z

Review comments:
diff_hunk: @@ -125,7 +125,7 @@ impl BlockBlobClient {
         options: Option<BlockBlobClientStageBlockOptions<'_>>,
     ) -> Result<Response<BlockBlobClientStageBlockResult>> {
         self.client
-            .stage_block(block_id, content_length, body, options)
+            .stage_block(&block_id, content_length, body, options)
path: sdk/storage/azure_storage_blob/src/clients/block_blob_client.rs
user: login: Copilot
body: Passing block_id by reference aligns with the updated API signature, preventing unintended moves of block_id.
created_at: 2025-05-01T22:43:13Z
author_association: CONTRIBUTOR
diff_hunk: @@ -125,7 +125,7 @@ impl BlockBlobClient {
         options: Option<BlockBlobClientStageBlockOptions<'_>>,
     ) -> Result<Response<BlockBlobClientStageBlockResult>> {
         self.client
-            .stage_block(block_id, content_length, body, options)
+            .stage_block(&block_id, content_length, body, options)
path: sdk/storage/azure_storage_blob/src/clients/block_blob_client.rs
user: login: jhendrixMSFT
body: I assume that the outer `blob_id` param will change to `&[u8]` in a future PR?
created_at: 2025-05-01T22:47:39Z
author_association: MEMBER
diff_hunk: @@ -125,7 +125,7 @@ impl BlockBlobClient {
         options: Option<BlockBlobClientStageBlockOptions<'_>>,
     ) -> Result<Response<BlockBlobClientStageBlockResult>> {
         self.client
-            .stage_block(block_id, content_length, body, options)
+            .stage_block(&block_id, content_length, body, options)
path: sdk/storage/azure_storage_blob/src/clients/block_blob_client.rs
user: login: heaths
body: That's a question for @vincenttran-msft 
created_at: 2025-05-01T22:49:07Z
author_association: MEMBER
diff_hunk: @@ -125,7 +125,7 @@ impl BlockBlobClient {
         options: Option<BlockBlobClientStageBlockOptions<'_>>,
     ) -> Result<Response<BlockBlobClientStageBlockResult>> {
         self.client
-            .stage_block(block_id, content_length, body, options)
+            .stage_block(&block_id, content_length, body, options)
path: sdk/storage/azure_storage_blob/src/clients/block_blob_client.rs
user: login: heaths
body: He said I could change it...
created_at: 2025-05-01T22:54:09Z
author_association: MEMBER

PR comments:
user: login: azure-sdk
created_at: 2025-05-01T22:51:10Z
body: ## API Change Check

APIView identified API level changes in this PR and created the following API reviews

[azure_security_keyvault_certificates](https://spa.apiview.dev/review/3ee8e68cd3a54983ab3c3715527842a6?activeApiRevisionId=34df4e6d29444d89834ae09e3ce05e71)
[azure_security_keyvault_keys](https://spa.apiview.dev/review/fa85d7249c36440b969fede0383f1074?activeApiRevisionId=f1e4e55b090648e18af09cf9825619a6)
[azure_security_keyvault_secrets](https://spa.apiview.dev/review/bd8ec289970e4edc8bacf9a1489ebc41?activeApiRevisionId=938f126917724c20b53294f9026d0bd3)
[azure_storage_blob](https://spa.apiview.dev/review/a413cb50d0fb4396a776c69b524ccc9e?activeApiRevisionId=e637c10061774163881d983bd98b1e48)
<!-- Fetch URI: https://apiview.dev/api/pullrequests?pullRequestNumber=2547&repoName=Azure/azure-sdk-for-rust&commitSHA=0d96962d24ca732edca81402d74e58ae54bd7280 -->
author_association: COLLABORATOR
user: login: azure-sdk
created_at: 2025-05-01T23:10:02Z
body: **API change check**

APIView has identified API level changes in this PR and created following API reviews.

[azure_security_keyvault_certificates](https://apiview.dev/Assemblies/Review/3ee8e68cd3a54983ab3c3715527842a6?revisionId=34df4e6d29444d89834ae09e3ce05e71)
[azure_security_keyvault_keys](https://apiview.dev/Assemblies/Review/fa85d7249c36440b969fede0383f1074?revisionId=f1e4e55b090648e18af09cf9825619a6)
[azure_security_keyvault_secrets](https://apiview.dev/Assemblies/Review/bd8ec289970e4edc8bacf9a1489ebc41?revisionId=938f126917724c20b53294f9026d0bd3)
[azure_storage_blob](https://apiview.dev/Assemblies/Review/a413cb50d0fb4396a776c69b524ccc9e?revisionId=e637c10061774163881d983bd98b1e48)


author_association: COLLABORATOR